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 を閉じます