土曜日, 6月 10, 2006
[Java]イベント処理
Javaのイベント処理を実装するのは少し面倒である。欲しいイベントのリスナーオブジェクト(???Listener)を
インターフェイスに実装する必要があるからだ。初心者には見つけるのが大変である。
(implements-クラスにインターフェイスの実装を指定する)
MouseWheelListener ->ScrollPane または JScrollPane をスクロールする際に使用する。
▼MouseMotionListenerインターフェイス
■登録メソッド
addMouseMotionListener
■イベント定義
public void mouseDragged(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
▼質問
MouseListenerインターフェースを実装すると使わないメソッドまで宣言して定義しなくてはならないけど
必要なものだけ宣言したい。そんな便利なものはないのか?
▼回答
MouseAdapterクラスを実装すればできる。クラスなのでextendsしなくてはならない。
//リスナーの登録
XXX.addMouseListener(new myListener());
//イベントクラスの再定義
public class myListener extends MouseAdapter{
public void mouseClicked(MouseEvent e){
}
}
▼質問
JListとJScrollPaneで作成したスクロールの「▼」「▲」ボタンのイベント処理はどうやるの?
▼回答
JScrollPaneからスクロールバーのオブジェクトを取得すればできるよ。
JScrollPane scrollPane = new JScrollPane();
//垂直スクロールの場合
JScrollBar vscr = this.scrollPane.getVerticalScrollBar();
vscr.setVisible(true);
vscr.addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
System.out.println("イベントが起きたよ!->addAdjustmentListener");
}
});
//水平スクロールの場合
JScrollBar hscr = this.scrollPane.getHorizontalScrollBar();
hscr.setVisible(true);
hscr.addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
System.out.println("イベントが起きたよ!->addAdjustmentListener");
}
});
インターフェイスに実装する必要があるからだ。初心者には見つけるのが大変である。
(implements-クラスにインターフェイスの実装を指定する)
MouseWheelListener ->ScrollPane または JScrollPane をスクロールする際に使用する。
▼MouseMotionListenerインターフェイス
■登録メソッド
addMouseMotionListener
■イベント定義
public void mouseDragged(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
▼質問
MouseListenerインターフェースを実装すると使わないメソッドまで宣言して定義しなくてはならないけど
必要なものだけ宣言したい。そんな便利なものはないのか?
▼回答
MouseAdapterクラスを実装すればできる。クラスなのでextendsしなくてはならない。
//リスナーの登録
XXX.addMouseListener(new myListener());
//イベントクラスの再定義
public class myListener extends MouseAdapter{
public void mouseClicked(MouseEvent e){
}
}
▼質問
JListとJScrollPaneで作成したスクロールの「▼」「▲」ボタンのイベント処理はどうやるの?
▼回答
JScrollPaneからスクロールバーのオブジェクトを取得すればできるよ。
JScrollPane scrollPane = new JScrollPane();
//垂直スクロールの場合
JScrollBar vscr = this.scrollPane.getVerticalScrollBar();
vscr.setVisible(true);
vscr.addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
System.out.println("イベントが起きたよ!->addAdjustmentListener");
}
});
//水平スクロールの場合
JScrollBar hscr = this.scrollPane.getHorizontalScrollBar();
hscr.setVisible(true);
hscr.addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent e) {
System.out.println("イベントが起きたよ!->addAdjustmentListener");
}
});