16.グラフィカルなアプリケーション

 標準クラスライブラリに含まれるAWT(Abstract Window Toolkit)を利用して、GUI(Graphical User Interface)アプリケーションを作成する。
AWT以外にもJavaFXやSwingがある。

  1. ウィンドウを作成する
    // フレームを使う
    import java.awt.*;
    import java.awt.event.*;
    
    public class Sample1 extends Frame
    {
    	public static void main(String[] args)
    	{
    		Sample1 sm = new Sample1();
    	}
    
    	public Sample1() // コンストラクタ
    	{
    		super("サンプル"); // Frameのコンストラクタ呼び出し
    	/*
    		// イベント(閉じる)を受け取る準備
    		addWindowListener(new SampleWindowListener());
    	*/
    		setSize(250,200); // 横×縦
    		setVisible(true); // 可視
    	}
    /*
    	// WindowAdapterはウィンドウイベントを受け取る抽象アダプタクラス
    	class SampleWindowListener extends WindowAdapter
    	{
    		public void windowClosing(WindowEvent e)
    		{
    			System.exit(0);
    		}
    	}
    */
    }
    // end of Sample1.java
    
  2. コンポーネントを表示する
    コンポーネント:ウィンドウに表示する部品
  3. イベント(event)
    イベント処理(event handling):GUIにおいてマウスなどに反応して動作するためのしくみ
    ソースイベントリスナー
    ウィンドウ
    addWindowListener()
    WindowEventWindowListener extends WindowAdapter
    windowClosing()
    ボタン
    addActionListener()
    ActionEventActionListener
    actionPerformed()
  4. マウスに反応させる・・・MouseListener
    // マウスに反応させる
    import java.awt.*;
    import java.awt.event.*;
    
    public class Sample4 extends Frame
    {
    	private Button bt;
    
    	public static void main(String[] args)
    	{
    		Sample4 sm = new Sample4();
    	}
    
    	public Sample4() // コンストラクタ
    	{
    		super("サンプル");
    
    		bt = new Button("ようこそ"); // ボタンを作成
    		bt.setForeground(Color.blue); // 色を設定
    		bt.setFont(new Font("Serif", Font.BOLD, 24)); // フォントを設定
    		add(bt); // ボタンを追加
    
    		addWindowListener(new SampleWindowListener());
    		// イベントを受け取る準備
    		bt.addMouseListener(new SampleMouseListener());
    
    		setSize(250,200);
    		setVisible(true);
    	}
    
    	class SampleWindowListener extends WindowAdapter
    	{
    		public void windowClosing(WindowEvent e)
    		{
    			System.exit(0);
    		}
    	}
    
    	// MouseListenerはマウスイベントを受け取るためのリスナーインタフェース
    	class SampleMouseListener implements MouseListener
    	{ // 下の5つのメソッドを定義しておかなければならない!
    		public void mousePressed(MouseEvent e){}
    		public void mouseReleased(MouseEvent e){}
    		public void mouseClicked(MouseEvent e){}
    		// マウスが入ったときの処理
    		public void mouseEntered(MouseEvent e)
    		{
    			bt.setLabel("Javaへ!");
    		}
    		// マウスが出たときの処理
    		public void mouseExited(MouseEvent e)
    		{
    			bt.setLabel("ようこそ");
    		}
    	}
    }
    // end of Sample4.java
    

    ↓↑
  5. イベント処理の簡単な記述

 コマンドプロンプトから起動していたプログラムをアプリケーション(application)と呼ぶのに対して、Webブラウザ上で動くプログラムをアプレット(applet)と呼ぶ。 アプレットはWebサーバからダウンロードされてWebブラウザ上で実行されるのに対して、 Webサーバ上で実行されるプログラムはサーブレット(servlet)と呼ばれる。 アプレットではセキュリティーの観点から、ユーザマシン上のファイル操作ができない等、アプリケーションよりも処理が制限されている。
(Webブラウザ上でアプレットを動かすための準備はこちら、このページのサンプルアプレットの実行には、認証ダイアログに対して、

このJavaWeb資料と同様の、ユーザ名:java、パスワード:javajava を入力する)

  1. アプレットの作成手順
    1. アプレットのクラスの作成
      Appletクラスを拡張して宣言する!
      import java.applet.Applet;
      
      class クラス名 extends Applet
      {
      
      }
      
      • 簡単なアプレット
        // 「ようこそJavaアプレットへ!」と表示する
        import java.applet.Applet;
        import java.awt.Graphics;
        
        public class Sample1 extends Applet
        {
        	public void paint(Graphics g)
        	{
        		g.drawString("ようこそJavaアプレットへ!", 50, 50 );
        	}
        }
        // end of Sample1.java
        
      • paint()メソッドはアプレットの画面が描かれるときにWebブラウザから呼び出される
      • Graphicsクラスのオブジェクトを受け取る
    2. コンパイルしてクラスファイルを作成
      > javac Sample1.java
    3. HTMLファイルを用意
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <title>title</title>
      </head>
      <body>
      <applet code="クラスファイル名" width="幅" height="高さ">
      </applet>
      </body>
      </html>
      
      例:Sample1.html
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Sample1</title> </head> <body style="background-color: lightblue;"> <applet code="Sample1.class" width="400" height="300"> </applet> </body> </html>
    4. アプレットビューア(appletviewer)を使ってアプレットの実行
      > appletviewer Sample1.html
    5. WebブラウザでHTMLファイルを開いて見たいところだが...
      ★Javaセキュリティによってブロックされる!
    6. アプレットを公開・・・サンプル
      HTMLファイルとクラスファイルをサーバにアップロード!
  2. 色々なアプレット