を押す:ActionEvent
フォーカスをほかのGUIコンポーネントに移す:FocusEvent
インプットメソッドを使ってテキスト入力する:InputMethodEvent
キーボードから入力する。:KeyEvent
マウスで操作する。:MouseEvent
テキストを変更する。:TextEvent
テキストエリア
フォーカスをほかのGUIコンポーネントに移す:FocusEvent
インプットメソッドを使ってテキスト入力する:InputMethodEvent
キーボードから入力する。:KeyEvent
マウスで操作する。:MouseEvent
テキストを変更する。:TextEvent
イベント | イベントリスナー |
ActionEvent | ActionListener |
FoucusEvent | FocusListener |
InputMethodEvent | InputMethodListener |
KeyEvent | KeyListener |
MouseEvent | MouseListener |
MouseEvent | MouseMotionListener |
TextEvent | TextListener |
②イベント処理メソッド
イベントリスナー | イベント処理メソッド | イベントタイプ | アクション |
ActionListener | actionPerformed | ACTION_PERFORMED | ボタン、ラベルがクリックされた |
FocusListener | focusGained | FOCUS_GAINED | フォーカスを得た |
FocusListener | focusLost | FOCUS_LOST | フォーカスを失った |
InputMethodListener | caretPositionChanged | CARET_POSITION_CHANGED | キャレットの位置が変わった |
InputMethodListener | inputMethodTextChanged | INPUT_METHOD_TEXT_CHANGED | インプットメソッドテキストが変更された |
KeyListener | keyPressed | KEY_PRESSED | キーが押された |
KeyListener | keyReleased | KEY_RELEASED | キーが話された |
KeyListener | keyTyped | KEY_TYPED | キーがタイプされた |
MouseListener | mouseClicked | MOUSE_CLICKED | マウスボタンがクリックされた |
MouseListener | mouseEntered | MOUSE_ENTERED | マウスカーソンが乗った |
MouseListener | mouseExited | MOUSE_EXITED | マウスカーソルが出た |
MouseListener | mousePressed | MOUSE_PRESSED | マウスボタンが押された |
MouseListener | mouseReleased | MOUSE_RELEASED | マウスボタンが離された |
MouseMotionListener | mouseDragged | MOUSE_DRAGGED | マウスがドラッグされた |
MouseMotionListener | mouseMoved | MOUSE_MOVED | マウスカーソルが移動 |
TextListener | textValueChanged | TEXT_VALUE_CHANGED | テキストが変更された |
③イベントリスナークラス(ActionListenerインタフェースの実装)
ActionListenerインタフェースを実装したイベントリスナークラスの構造は次の図のとおりです。
イベントソースからActionListenerインタフェースを実装したイベントリスナークラスの例です。
package sample009;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
public class ButtonEvent {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
JFrame f = new JFrame("buttonEvent1");
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
Container c = f.getContentPane();
JButton b = new JButton("C l i c k");
// イベントリスナーのインスタンスを作る
myListener func = new myListener();
// ボタンにイベントリスナーを登録する
b.addActionListener(ml);
c.add(b);
f.pack();
f.setVisible(true);
}
}
package sample009;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class myListener implements ActionListener {
// イベント処理メソッドの定義 イベントリスナーインタフェースの抽象メソッドをオーバーライド
public void actionPerformed(ActionEvent a) {
System.out.println("ボタンがクリックされました");
}
}
④イベントリスナークラス(ActionListenerインタフェースの実装)
複数のボタンがある場合にボタンを押すと判別のための文字列を表示するプログラムです。
package sample003;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
public class sample003 {
public static void main(String args[]) {
//メソッド定義
JFrame f = new JFrame("buttonEvent2");
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
Container c = f.getContentPane();
// ボタン作成
JButton a = new JButton("BUTTON A");
JButton b = new JButton("BUTTON B");
//インスタンスの作成
myListener func = new myListener();
// ボタンAにイベントリスナーを登録する
a.addActionListener(func);
b.addActionListener(func);
c.add(a, BorderLayout.WEST);
c.add(b, BorderLayout.EAST);
f.pack();
f.setVisible(true);
}
}
package sample003;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class myListener implements ActionListener {
public void actionPerformed(ActionEvent A) {
// イベントの起こったGUIコンポーネントを取り出す
String bname = A.getActionCommand();
System.out.println(bname + "がクリックされました");
}
}
⑤アダプタークラス
アダプタークラスは複数のイベント処理メソッドを持つリスナーインタフェースを実装して、そのインタフェースのすべてのイベント処理メソッド本体を空で定義したクラスであり、
使用する場合は、アダプタークラスを継承したリスナークラスを作成します。
イベントソースとリスナーインタフェースを実装したアダプタークラスを継承したイベントリスナークラスの構造は次の図のとおりです。
package sample005;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
class sample005 {
// フィールド宣言
static JTextField T_Field;
static JButton A;
static JButton B;
static JButton C;
static JButton D;
public static void main(String args[]) {
JFrame f = new JFrame("ButtonEvent");
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
Container c = f.getContentPane();
T_Field = new JTextField("アルファベット");
A = new JButton("A BUTTON");
B = new JButton("B BUTTON");
C = new JButton("C BUTTON");
D = new JButton("D BUTTON");
myListener func = new myListener();
A.addMouseListener(func);
B.addMouseListener(func);
C.addMouseListener(func);
D.addMouseListener(func);
c.add(A, BorderLayout.NORTH);
c.add(B, BorderLayout.WEST);
c.add(C, BorderLayout.EAST);
c.add(D, BorderLayout.SOUTH);
c.add(T_Field, BorderLayout.CENTER);
f.setSize(350,150);
f.setVisible(true);
}
}
package sample005;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
class myListener extends MouseAdapter {
// 使用するメソッドだけをオーバーライド
public void mousePressed(MouseEvent F){
if(F.getSource()==sample005.A){
sample005.T_Field.setText("Aのボタンを押しました");
}else if(F.getSource()==sample005.B){
sample005.T_Field.setText("Bのボタンを押しました");
}else if(F.getSource()==sample005.C){
sample005.T_Field.setText("Cのボタンを押しました");
}else if(F.getSource()==sample005.D){sample005.T_Field.setText("Cのボタンを押しました");}
else{
}
}
public void mouseReleased(MouseEvent F) {
sample005.T_Field.setText("アルファベット");
}
}