Comments
Description
Transcript
Java簡単な応用プログラム(その2)
Javaの実践 Java簡単な応用プログラム(その2) Javaの実践 Javaは、すでにある部品群を上手く使ってプログラムを組み立てます。 前回と同様にFrameを使って、ウイン ドウを表示するプログラムを作りましょ う. Frameは、ウインドウを作るための部 品で、フレーム(枠)とタイトルおよび 品で、フレ ム(枠)とタイトルおよび, 決められた仕組みが入っています. java.awtパッケージは,ウインドウ関連の tパッケ ジは ウインドウ関連の 部品が多くあります. javax.swingパッケージに同様なウインド ウ関連の部品があり、最近はこれを使う ケースが多いです. Javaの実践 2.ウィンドウの中でマウスがクリックされたところに長方形を書くプログラム このプログラムは、先週のプログラムに次の3点を加えます。 1.「マウスがクリックされる」 イベント処理にマウスアダプタを加える。 2.イベントが発生したら 「ウインドウに長方形を描け」 と指示する。 3 マウスアダプタを作成し登録する 3.マウスアダプタを作成し登録する。 マウスアダプタ(MouseAdapter)クラスが用意され、これを継承したOurMouseAdapterクラスを作る。 Class OurMouseAdapter extends MouseAdapter; そこでMouseClickedメソッドを自分用に書き換える(オ バ ライド)。 そこでMouseClickedメソッドを自分用に書き換える(オーバーライド) ①マウスをクリックした場所の x, y 座標を取る. ( x,y は、int ) x = e.getX( ); y = e.getY( ); Graphics g = getGraphics( ); // ②図形を描くオブジェクトを作り、”g” とする. g.setColor(Color.red); // ③図形の色は赤 g.fillRect(x-30,y-20,60,40); //④マウスをクリックした場所を中心として長方形を描いて塗りつぶす System.out.println(“長方形を描いた”); 0 X=x-30 , Y=y-30 何度でも長方形を描くこ とが出来る. また終了ボタンでウインド ウが閉じる. X x X軸 Y 40 y 60 Y軸 Javaの実践 2. ウィンドウの中でマウスがクリックされたところに長方形を書くプログラム 「Frameを使った場合」 Main.java と MakeFrame パッケージ名:frameP2 Mainクラス (前と同様) package frameP2; Mainクラス public class Main{ public static void main(String[] args){ MakeFrame f = new MakeFrame(); f.setVisible(true); System.out.println("Frame2 を作りました"); } } main文宣言(最初に読まれる) インスタンス化 MakeFrameクラスのコピーを“f”と して作ります オブジェクトfを見えるようにします コンソールにFrameを作ったと表示し ます MakeFrameクラス awtと呼ばれる部品群を使います Package frameP2; MakeFrameクラスをFrameのサブクラスとして定義 import java.awt.*; import java.awt.event.*; コンストラクタ: MakeFrameクラスのインスタンスが作られた時に起動 class MakeFrame extends Frame{ ウインドウ範囲 public MakeFrame(){ タイトル setSize(400,400); setTitle( tTitl ("マウスをクリックして長方形を作る") マウスをクリックして長方形を作る ); Wi d アダプタ Windowアダプタのコピーを作り,”OWA”とする ピ を作り ”OWA”とする OurWindowAdapter Owa = new OurWindowAdapter(); Windowにリスナをつけ,イベントを聞けるようにする addWindowListener(Owa); マウスアダプタのコピーを作り,”Oma”とする OurMouseAdapter Oma = new OurMouseAdapter(); addMouseListener(Oma); マウスアダプタにリスナーをつけ,イベントを聞けるようにする ウ ダプタにリ ナ を け イベ トを聞けるようにする } class OurWindowAdapter extends WindowAdapter{ Windowアダプタクラスの定義 public void windowClosing(WindowEvent e){ System.out.println("Frame2 をクローズしました"); マウスアダプタクラスの定義 System.exit(0); } マウスがクリックされた時の動作の定義 } マウスのx座標を取り変数x に代入 class OurMouseAdapter extends MouseAdapter{ public bli void id mouseClicked(MouseEvent Cli k d(M E t e){ ){ マウスのy座標を取り変数y に代入 int x, y; x = e.getX(); Frameに図形を描くためGraphic オブジェクトを作成 し”g”とします y = e.getY(); Graphics g = getGraphics(); 図形の色を赤とします g.setColor(Color.red); 長方形を描いて中を塗りつぶします g.fillRect(x-30, y-20, 60, 40); System.out.println("長方形を描いた"); g.dispose(); オブジ クト をメモリから消滅させます オブジェクトgをメモリから消滅させます } } } Javaの実践 Graphicsクラスの主なメソッド drawString(String str,int x, int y); drawline(int x1,int y1,int x2,int y2); drawRect(int x,int x int y,int y int width,int width int height); fillRect(int x,int y,int width,int height); drawOval(int x,int y,int width,int height); fillOvel(int x,int y,int width,int height); 描画カラー 黒 青 緑 水色 赤 紫 黄色 白 明るい灰色 灰色 暗い灰色 桃色 橙色 // str : 文字列 x,y: 最初の文字の位置(座標) // 座標(x1,y1)から(x2,y2)まで直線を引く //(x y)を始点にwidth heightの長方形を描く //(x,y)を始点にwidth,heightの長方形を描く //drawRectと同じ、長方形の中が塗りつぶされる // 楕円を描く。(x,y) 楕円がぴったり収まる長方形の左上隅 // drawOvalと同じ、ただし 楕円の中が塗りつぶされる 文字変数 Color.black Color blue Color.blue Color.green Color.cyan Color.red Color magenda Color.magenda Color.yellow Color.white Color.lightgray Color gray Color.gray Color.darkgray Color.pink Color.orange Javaの実践 「JFrameの場合」 2.ウィンドウの中でマウスがクリックされたところに長方形を書くプログラム をjFrameで作ってみましょう パッケージ名:jFrame2 Mainクラス(前と同様) package jFrame2; Mainクラス public class Main { public static void main(String[] args) { (); MakeJFrame jjf = new MakeJFrame(); jf.setVisible(true); System.out.println("JFrame1を作りました"); } MakeJFrameクラス package jFrame2; import java.awt.event.*; java awt event *; import java.awt.*; import javax.swing.*; public class MakeJFrame extends JFrame{ public MakeJFrame(){ setSize(400,400); setTitle("マウスをクリックして長方形を作る"); OurMouseAdapter Oma = new OurMouseAdapter(); addMouseListener(Oma); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } class OurMouseAdapter extends MouseAdapter{ public void mouseClicked(MouseEvent e){ int x, y; x = e.getX(); y = e.getY(); Graphics g = getGraphics(); g.setColor(Color.red); g fillRect(x-30 g.fillRect(x 30, yy-20 20, 60 60, 40); System.out.println("長方形を描いた"); g.dispose(); } } インスタンス化 MakeJFrameクラスのコピーを “ f”として作ります “jf”として作ります インスタンスjfを見えるようにします コンソールにJframeを作ったと表示 ンソ ルに を作 たと表示 します } } main文宣言(最初に読まれる) i 文宣言(最初に読まれる) 「JFrameの場合」 MakeJFrameクラスをJFrameのサ ブクラスとして定義します コンストラクタ: MakeJFrameクラスの オブジェクトが作られた時に起動 マウスアダプタのコピーを作 り,”Oma”とする マウスアダプタにリスナーをつけ, イベントを聞けるようにする Windowを閉じる処理 マウスアダプタクラスの定義 マウスクリック時の動作定義 マウスのx座標を取り変数x に代入 マウスのy座標を取り変数y に代入 Frameに図形を描くためGraphic オブ ジェクトを作成し”g”とします 図形の色を赤とします 長方形を描いて中を塗りつぶします オブジ クト をメモリから消滅させます オブジェクトgをメモリから消滅させます Javaの実践 「JFrameの場合」 前回のプログラム(1)を JFrameで作ってみましょう Main.javaと MakeJFrame パッケージ名:jFrame1 Mainクラス package jFrame1; Mainクラス public class Main { public static void main(String[] args) { MakeJFrame jf = new MakeJFrame(); jf.setVisible(true); System.out.println("JFrame1を作りました"); } main文宣言(最初に読まれる) インスタンス化 MakeJFrameクラスのコピーを “jf”として作ります j 作ります インスタンスjfを見えるようにします コンソールにJframeを作ったと表示 します } Javaの実践 「JFrameの場合」 MakeJFrameクラス package jFrame1; import java.awt.*; import javax.swing.*; javax swing *; public class MakeJFrame extends JFrame{ public MakeJFrame(){ setTitle("都立産業技術高専 情報通信工学コースJFrame1"); setSize(400,200); JLabel label1 = new JLabel("Javaのプログラムを作りましょう", JLabel.CENTER); Container cont = getContentPane(); cont add(label1); cont.add(label1); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } awtと呼ばれる部品群を使います swingと呼ばれる部品群を使います MakeJFrameクラスをJFrameのサブ クラスとして定義します コンストラクタ: MakeJFrameクラス のオブジェクトが作られた時に起動 タイトル ウインドウの範囲 ラベルlabel1 「横の中央に配置」 コンテナ―のコピーを“cont”として作 ります label1を“cont”に加えます MakeJFrame を閉じます Javaの実践 「JFrameの場合」 1_2: 背景色を赤にする場合は、少し面倒です Main.javaと MakeJFrame パッケージ名:jFrame1_2 Mainクラス(前と同じ) package jFrame1_2; Mainクラス ppublic class Main { public static void main(String[] args) { MakeJFrame jf = new MakeJFrame(); jf.setVisible(true); System.out.println("JFrame1を作りました"); y p ( を作り ); } main文宣言(最初に読まれる) インスタンス化 MakeJFrameクラスのコピーを クラ の ピ を “jf”として作ります インスタンスjfを見えるようにします コンソールにJframeを作ったと表示 します } Javaの実践 「JFrameの場合」 MakeJFrameクラス package jFrame1_2; jFrame1 2; import java.awt.*; import javax.swing.*; public class MakeJFrame extends JFrame{ public MakeJFrame(){ setTitle(“産技高専 情報通信工学コース JFrame1"); setSize(400,200); awtと呼ばれる部品群を使います swingと呼ばれる部品群を使います MakeJFrameクラスをJFrame のサブクラスとして定義します コンストラクタ: MakeJFrameクラス のオブジェクトが作られた時に起動 タイトル JPanel p = new JPanel(); p.setBackground(Color.red); JLabel label1 = new JLabel("Javaのプログラムを作りましょう"); label1.setPreferredSize(new Dimension(400,200)); label1.setHorizontalAlignment(JLabel.CENTER); label1 setVerticalAlignment(JLabel CENTER); label1.setVerticalAlignment(JLabel. p.add(label1); label1をパネルpに付ける Container cont = getContentPane(); cont.add(p); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } ウインドウ範囲 パネルの設定 パネルに背景色を赤にする ラベルlabel1 ラベルlabel1を置くスペース ラベルlabel1を置くスペ ス label1を縦の中央に置く Label1を横の中央に置く コンテナのコピーを“cont”として テナの ピ を“ ”とし 作ります パネルpをコンテナーに加える MakeJFrame を閉じます