JAVA入門後期③ JAVAのGUI (JavaのGUI基本構造、いろいろなアプレット)
GUI構造 1.GUI構造 JAVAでGUIを構築するクラスとして、下記のがあります。 ①アプレットパッケージ ② AWT ③ Swing 特に②、③はコンポーネント、パッケージを利用。
GUI構造 ①アプレット概要 特徴 1.最初から、GUI環境が用意されている。 イベント処理などは、「アプリケーションと同様」 2.WebページのHTMLに埋め込む 3.文字列等はブラウザ依存
GUI構造 JAVAアプレットクラス コンパイル アプリケーションと同様 クラスファイルの作成 埋め込み タグコード記述 HTML文書
GUI構造 HTML文書指定 読み込み Webブラウザ アプレットビューア
アプレットクラスの作成 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 DialogInput Monospaced Serif SansSerif Symbol フォントスタイル 並 Font.PLAN 太字 Font.BOLD イタリック Font.ITALIC
画像表示 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ページに移動、アプレット停止 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.と同様の結果が得られます。