Java

【javaでGUIを作る】JavaApplet #1

イベント処理とコンポーネント処理の概要

アプリケーションのためのGUIを作る時、どのようにユーザの動きを処理するのか、、
それは、ボタンが押された時やメニューが選択された時などに生じるeventを処理すれば良い。eventは、オブジェクトでソースの状態の移り変わりを表している。その移り変わりを認識するのがlistenerである。

evetを処理する流れ (The Delegation Event Model)

①ユーザーがマウス、ボタンなどを操作する
②Sourceがeventを発生させ、listenerの集合に通知する
③listenerがinterfaceを実装する

イベント処理する時に使うクラスたち(Event class)

event classの階層
EventObject class

EventObjectが持ってるメソッド
getSource()は、objectが生成したeventを返すメソッド
toSource()は、eventの中身をStringで返すメソッド

AWTEvent class

AWTEventが持っているメソッド
AWTevent(Object source, int id)Sourceは、Objectでありeventを生成します。idは、eventのtypeを識別します。
getID()はeventのtypeを返すメソッド

AWT Event Classes によって配置されたGUI部品のイベント処理は、部品によってイベントクラス、、イベントリスナークラス、 イベント処理メソッドによって処理される。それぞれの組み合わせを下に示す。

 イベントクラス イベントリスナークラス イベント処理メソッド GUI 部品
ActionEvent ActionListener actionPerformed Button,List,MenuItem,TextField
AdjustmentEvent AdjustmentListener adjustmentValueChanged Scrollbar
ItemEvent ItemListener itemStateChanged Checkbox,Choice,CheckboxMenuItem,List
ComponentEvent ComponentListener まだやってない まだやってない
ContainerEvent ContainerListener まだやってない まだやってない
FocusEvent FocusListener まだやってない まだやってない
KeyEvent KeyListener KeyListener keyPressed, keyReleased, KeyTyped
MouseEvent (MouseListener), (MouseMotionListener) (MouseAdapter), (MouseMotionAdapter) (mouseClicked, mouseEntered, mouseExited, mousePressed, mouseReleased),(mouseDragged, mouseMoved)
TextEvent TextListener まだやってない まだやってない
WindowEvent WindowListener まだやってない まだやってない

event handlingの設定

イベント処理の一連の動作を行うためには、イベント処理の設定をしなければいけない。イベントが発生するオブジェクトにリスナーオブジェクトを組み込み、イベント処理のメソッドを定義しておく。構造として、イベントクラス名、イベントリスナークラス名、アダプタークラス名を記述する。イベントリスナーは、イベント発生時に対応するアクションを実行するクラス。アダプタークラスは、イベントリスナーにイベント処理メソッドを定義するためのクラス。

コンポーネント処理する時に使うクラスたち(Applet class)

GUI部品のクラスは、java.awt.Componentクラスを継承しているので、ここでは、コンポーネント処理と呼ぶ

Applet classの階層
Component class

componentとは、Button, LabelなどのGUI部品になるもので、java.awt.Componentにあります。

Componentが持っているメソッド(listenerに登録と登録解除することを可能にするメソッドがある)
void addTypeListener(TypeListener tl)
void removeTypeListener(TypeListener tl)

Appletの概要

Appletとは、WebページのHTMLから参照できるプログラム

Appletの動作

アプレットが実行される時、次のような順序でメソッドが呼び出される。ユーザーはメソッドの定義内容を変更し、必要とする処理を実行させる。変更しない場合は、Appletクラスで定義されている基本メソッドが実行される
一般的には、以下の順序でメソッドが実行される
①init():ブラウザがアプレットを読みこんだ時に呼び出される
②start():アプレットの実行を開始する時にapplet viewerまたはwebブラウザーから呼び出される
③paint():アプレットの開始時に呼び出される
④run():スレッドの実行時に呼び出される
⑤stop():アプレットの終了時に呼び出される。例えばアプレットが表示されているWebページから、別のホームページへ移動したりする場合に呼び出されます。
⑥destroy():アプレットが完全に終了される時にapplet viewerまたはwebブラウザーから呼び出される

event listenerの具体例

MouseListener (Low-level Listenr)

MouseListenerは、インターフェースであるために、必ずオーバーライドしないといけないメソッドがある
マウスが押されたなどのイベントを監視して、イベント発生時にアクションを実行するサンプルです。

Adapter classes (low-lebel event listener)

adapterは、イベントリスナーにイベント処理のメソッドを定義するためのクラス <applet></applet>は、HTMLのタグで、そのタグ内でjava appletコードの実行が反映される マウスをクリックし続けていると画面が赤くなり、クリックをやめると緑になる

ActionListener

ボタンが押されたなどのイベントを監視して、イベント発生時にアクションを実行するサンプルです。

Appletの具体例

colorを変える

様々なtextを表示させる

imageを表示する

Dimensionを使う

WebでAppletを使う

appletContext interface

このインターフェースのメソッドをアプレット内で使用すると、そのアプレットの環境についての情報を取得できます。

備考 Event Handling(old model sample code)

Label setOKの2つのボタンからなるGUIでLavelsetのボタンをクリックするとLabel Set Button Clicked! と値が表示され、OKボタンがクリックされるとOK Button Clicked!と表示されるjava appletプログラムです。
javac ファイル名でjavaファイルをコンパイルし、appletviewer ファイル名でアプレットプログラムを実行します。