サイズ: 2163
コメント:
|
サイズ: 3295
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 38: | 行 38: |
. !MouseListenerはjava.awt.eventパッケージ内にあります。 | |
行 39: | 行 40: |
import java.awt.event.*; | |
行 46: | 行 48: |
このインスタンスがイベントリスナとなることを指定します。 インスタンスが作成されたときに指定すればよいので、コンストラクタ内にaddMouseListenerを追加します。 |
このインスタンスがマウスイベントのリスナとなることを指定するために次のように記述します。 addMouseListener(this); インスタンスが作成されたときに指定すればよいので、コンストラクタ内に記述します。 |
行 58: | 行 60: |
!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 }