JAVA入門

JAVA入門後期③
JAVAのGUI
(JavaのGUI基本構造、いろいろなアプレット)
GUI構造
1.GUI構造
JAVAでGUIを構築するクラスとして、下記のがあります。
①アプレットパッケージ
② AWT
③ Swing
特に②、③はコンポーネント、パッケージを利用。
GUI構造
①アプレット概要
特徴
1.最初から、GUI環境が用意されている。
イベント処理などは、「アプリケーションと同様」
2.WebページのHTMLに埋め込む
3.文字列等はブラウザ依存
GUI構造
JAVAアプレットクラス
コンパイル
アプリケーションと同様
クラスファイルの作成
埋め込み
HTML文書
タグコード記述
GUI構造
読み込み
Webブラウザ
HTML文書指定
アプレットビューア
アプレットクラスの作成
1.アプレットクラスの作成
import java.awt.*;
import java.applet.*;
public class Hello extends Applet{
public static void main(Graphics g) {
g.drawString("Hello Java",10,10);
}
}
アプレットクラスの作成
コンパイルします。
C:・・・・>javac Hello.java
C:・・・・>
アプレットクラスの作成
HTMLファイルの準備
ファイル名: Hello.html
<HTML>
<BODY>
<APPLET CODE ="Hello.class" WIDTH = 200
HEIGHT = 100>
</APPLET>
</BODY>
</HTML>
アプレットクラスの作成
アプレットを実行します。
C:\・・・>appletviewer Hello.html
下記のようにアプレットが起動します。
アプレットクラスの作成
3.Webブラウザの起動
次いでHello.htmlファイルを起動します。
いろいろなアプレット
1.線描画
Graphicsクラスには、画面に文字、図を描くメ
ソッドが用意されている。(例1、図1)
2.色とフォント
Applet描画について、色、フォントの設定に関し
は次のような方法による。(例2、3)
メソッド名
void drawArc(int x, int y, int width, int
height, int startAngle, int arcAngle)
Boolean drawimage(Image img int x
int y imageObserver observer)
void drawLine(int x1, int y1, int x2, int
y2)
void drawOval(int x1, int y1, int width,
int height)
void drawPolygon(int xPoints[], int y
xPoints[] int nPoints)
void drawRect(int x1, int y1, int width,
int height)
図1.
機能
円弧を描く
イメージを描く
線を描く
楕円を描く
多角形
四角形
メソッド名
機能
void fillArc(int x, int y, int width, int
height, int startAngle, int arcAngle)
void fillOval(int x1, int y1, int width,
int height)
void fillPolygon(int xPoints[], int y
xPoints[] int nPoints)
void setColor(Color c)
円弧(塗りつぶ
し)
楕円(塗りつぶ
し)
多角形(塗りつ
ぶし)
色
void setFont(Font font)
フォント
図1.(続き)
例1.線描画
import java.applet.Applet;
import java.awt.Graphics;
public class SampleLine1 extends Applet{
public void paint(Graphics g){
g.drawLine(10,10,100,100);
}
}
線描画
ファイルSampleLine1.htmlとして
<HTML>
<BODY>
<APPLET CODE ="SampleLine1.class" WIDTH = 200
HEIGHT = 100>
</APPLET>
</BODY>
</HTML>
を用意
線描画
実行
例2.色の変更
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
public class SampleLine2 extends Applet{
public void paint(Graphics g){
g.setColor(Color.red);
g.drawLine(10,10,100,100);
}
}
線描画
ファイルSampleLine2.htmlとして
<HTML>
<BODY>
<APPLET CODE ="SampleLine2.class" WIDTH = 200
HEIGHT = 100>
</APPLET>
</BODY>
</HTML>
を用意
色の変更
実行
例3.フォントの設定
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
public class SampleLine3 extends Applet{
public void paint(Graphics g){
g.setColor(Color.red);
g.setFont(new Font("Serif",Font.BOLD,24));
g.drawString("Hello",20,20);
}
}
線描画
ファイルSampleLine3.htmlとして
<HTML>
<BODY>
<APPLET CODE ="SampleLine3.class" WIDTH = 200
HEIGHT = 100>
</APPLET>
</BODY>
</HTML>
を用意
フォントの設定
実行
色名
指定
白
ライトグレイ
グレイ
Color.white
Color.lightGray
Color.gray
ダークグレイ
黒
赤
Color.darkGray
Color.black
Color.red
ピンク
オレンジ
黄
緑
Color.pink
Color.orange
Color.yellow
Color.green
マゼンダ
Color.magenda
シアン
青
Color.cyan
Color.blue
フォント名
フォントスタイル
Dialog
並
Font.PLAN
DialogInput
太字
Font.BOLD
Monospaced
イタリック Font.ITALIC
Serif
SansSerif
Symbol
画像表示
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
public class SampleGazo1 extends Applet{
Image img;
public void init()
{
img=getImage(getDocumentBase(),"small.jpg");
}
public void paint(Graphics g)
{
g.drawImage(img,10,10,this);
}
}
画像表示
ファイルSampleGazo1.htmlとして
<HTML>
<BODY>
<APPLET CODE ="SampleGazo1.class" WIDTH = 200
HEIGHT = 100>
</APPLET>
</BODY>
</HTML>
を用意
画像表示
実行
アプレットの動作
メソッド名
init()
呼び出し時
Webブラウザ起動 アプレット初期化
start()
stop()
Webブラウザ起動、再読み込み、アプレッ
ト開始、再開
他のWebページに移動、アプレット停止
destroy()
Webブラウザ終了、アプレット終了
アプレットの動作
処理流れ
init()を自分のクラスで定義(オーバライド)すれば
ユーザがWebブラウザ起動時、最初1回行われる処理
を記述しておくことができ、
Webブラウザの動きに合わせた適切アプレットを作成
可能。
init()
start()
stop()
destroy
マウスに反応させる
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
public class SampleMouse1 extends Applet implements
MouseListener{
int x=10;
int y=10;
public void init()
{
addMouseListener(this);
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){
x = e.getX();
y = e.getY();
repaint();
}
public void mouseReleased(MouseEvent e){}
public void paint(Graphics g){
g.fillOval(x,y,10,10);
}
}
マウスに反応させる
ファイルSampleMouse1.htmlとして
<HTML>
<BODY>
<APPLET CODE =" SampleMouse1.class" WIDTH = 200
HEIGHT = 100>
</APPLET>
</BODY>
</HTML>
を用意
マウスに反応させる。
実行
AWTの部品とクラス
ボタン、チェックボックスなどのグラフィカルな部
品が用意されています。このセットをAWT
(Abstract Window Toolkit)と呼びます。
次に一覧を上げます。
AWTの部品とクラス
部品名
クラス名
ボタン
Button
チェックボックス
Checkbox
チョイス
Choice
ラベル
Label
リスト
List
テキストフィールド
TexField
AWTの部品とクラス
部品名
クラス名
テキストエリア
TextArea
スクロールバー
Scrollbar
キャンバス
Canvas
パネル
Panel
ダイアログ
Dialog
ファイルダイアログ
FillDialog
フレーム
Frame
import java.applet.Applet;
import java.awt.Button;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class SampleAWT1 extends Applet implements
ActionListener{
Button bt;
public void init()
{
bt=new Button("Strat");
add(bt);
bt.addActionListener(this);
}
public void actionPerformed(ActionEvent ae){
bt.setLabel("Stop");
}
}
AWTの部品とクラス
ファイルSampleAWT1.htmlとして
<HTML>
<BODY>
<APPLET CODE =" SampleAWT1.class" WIDTH = 200
HEIGHT = 100>
</APPLET>
</BODY>
</HTML>
を用意
AWTの部品とクラス
実行
アニメーション
import java.applet.Applet;
import java.awt.Graphics;
public class SampleAnime1 extends Applet implements
Runnable{
int num;
public void init()
{
Thread th;
th= new Thread(this);
th.start();
}
public void run(){
try{
for(int i=0;i<10;i++){
num=i;
repaint();
Thread.sleep(1000);
}
}
catch(InterruptedException e){}
}
public void paint(Graphics g)
{
String str = num+"です";
g.drawString(str,10,10);
}
}
アニメーション
ファイルSampleAnime1.htmlとして
<HTML>
<BODY>
<APPLET CODE =" SampleAnime1.class" WIDTH = 200
HEIGHT = 100>
</APPLET>
</BODY>
</HTML>
を用意
アニメーション
実行 数字が0~9と変わります。
アプレットでできないこと
セキュリティ面から通常アプリケーションより制
限をされています。
アプレットではユーザのマシンのファイルを操作
することはできません。
悪意のあるアプレットでユーザのファイルが壊さ
れることを防ぐためです。
アプレットタグの埋め込み
<APPLET>タグのソースへの埋め込み
これまでのところでは、完成したアプレットを起
動するのにHTMLファイルを用意しましたが、
小さなアプレットを作る度にHTMLファイルを用
意するのは大変なので、JAVAでは
<APPLET>タグのソースへの埋め込む
方法を用意しています。
アプレットタグの埋め込み
例1.では
import java.applet.Applet;
import java.awt.Graphics;
/*
<APPLET CODE ="SampleLine1.class" WIDTH = 200 HEIGHT
= 100>
</APPLET>
*/
public class SampleLine1 extends Applet{
public void paint(Graphics g){
g.drawLine(10,10,100,100);
}
}
アプレットタグの埋め込み
として、
C:\・・・>appletviewer SampleLine1.java
とコマンドを入力します。
下記のように例1.と同様の結果が得られます。