サイズ: 1662
コメント:
|
サイズ: 3295
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 25: | 行 25: |
---- | ----- |
行 29: | 行 29: |
作成するクラスはJPanelとmouseListenerの2つの親を持たなければなりません。 | === クラスの定義 === 作成するクラスはJPanelと!MouseListenerの2つの親を持たなければなりません。 |
行 32: | 行 33: |
. Javaではスーパークラスとして指定できるのは1つだけです。 . JPanelクラスを継承します。 |
Javaではスーパークラスとして指定できるのは1つだけです。 . JPanelクラスを継承することは次のように書きました。 |
行 35: | 行 36: |
. インターフェースはスーパークラスとしての指定ではなく実装の指定をします。 . implements mouseListener |
. インターフェースは次のように実装の指定として書きます。 . implements !MouseListener . !MouseListenerはjava.awt.eventパッケージ内にあります。 {{{ import java.awt.event.*; public class Lesson11 extends JPanel implements MouseListener { ... } }}} ---- === リスナの指定 === このインスタンスがマウスイベントのリスナとなることを指定するために次のように記述します。 addMouseListener(this); インスタンスが作成されたときに指定すればよいので、コンストラクタ内に記述します。 {{{ Lesson11() { ... addMouseListener(this); } }}} ---- === メソッドの記述 === !MouseListenerを実装するときには次の5つのメソッドを記述しなければなりません。 * mouseClicked * mouseEntered * mouseExited * mousePressed * mouseReleased 対応する処理が不必要な場合は本体が空のメソッドとして定義します。 引数や型は以下のとおりです。 {{{#!java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Lesson11 extends JPanel implements MouseListener { ... Lesson11() { ... addMouseListener(this); } public void paintComponent(Graphics g) { ... } public static void main(String[] args) { ... } public void mousePressed(MouseEvent e) { sx -= 5; repaint(); } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } } }}} |
イベントドリブン
GUI用いたプログラムは複数のスレッドで動作しています。
ボタンを押すなどのアクションやイベントに対して処理が行われます。
イベントが発生するとその情報はイベントキューに入れられ、 イベントの内容に対応するイベントリスナに処理を委ねられます。
インターフェース
リスナを作成するにはインターフェースを利用します。
- インターフェースは実体の無いクラスと考えられます。
- インターフェースはクラス図では点線を使って表します。
インターフェースでは、どのようなメソッドが必要かなどインターフェースだけが指定されています。
インターフェースを継承してクラスを作成するときには、 インターフェースで指定されているメソッドをすべて記述しなければなりません。 これを実装といいます。
例
画像を表示するプログラムにマウスイベントを追加します。
クラスの定義
作成するクラスはJPanelとMouseListenerの2つの親を持たなければなりません。
Javaではスーパークラスとして指定できるのは1つだけです。
- JPanelクラスを継承することは次のように書きました。
- extends JPanel
- インターフェースは次のように実装の指定として書きます。
implements MouseListener
MouseListenerはjava.awt.eventパッケージ内にあります。
import java.awt.event.*; public class Lesson11 extends JPanel implements MouseListener { ... }
リスナの指定
このインスタンスがマウスイベントのリスナとなることを指定するために次のように記述します。
- addMouseListener(this);
インスタンスが作成されたときに指定すればよいので、コンストラクタ内に記述します。
Lesson11() { ... addMouseListener(this); }
メソッドの記述
MouseListenerを実装するときには次の5つのメソッドを記述しなければなりません。
- mouseClicked
- mouseEntered
- mouseExited
- mousePressed
- mouseReleased
対応する処理が不必要な場合は本体が空のメソッドとして定義します。
引数や型は以下のとおりです。
1 import javax.swing.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 5 public class Lesson11 extends JPanel implements MouseListener 6 { 7 ... 8 9 Lesson11() 10 { 11 ... 12 addMouseListener(this); 13 } 14 15 public void paintComponent(Graphics g) 16 { 17 ... 18 } 19 20 public static void main(String[] args) 21 { 22 ... 23 } 24 25 public void mousePressed(MouseEvent e) 26 { 27 sx -= 5; 28 repaint(); 29 } 30 31 public void mouseEntered(MouseEvent e) { } 32 public void mouseExited(MouseEvent e) { } 33 public void mouseReleased(MouseEvent e) { } 34 public void mouseClicked(MouseEvent e) { } 35 }