2009年5月23日土曜日

Java AWT Foucusに関するイベント

FocusListener
focusGainedフォーカスを受けたときに発生する
focusLostフォーカス失った時に発生する


FocusAdapterクラスはFocusListenerインターフェースを実装済みのクラスです。

package MyPackage1;

import java.awt.*;
import java.awt.event.*;

public class FocusEventSample {
/*
* エントリポイント
*/
public static void main(String args[]){
new FocusEventSample();
}
Frame frm;
TextField txt1;
TextField txt2;
Label lbl1;
Label lbl2;
/*
* コンストラクタ
*/
public FocusEventSample(){
this.frm = new Frame("FocusEventSample");
frm.setSize(300, 300);
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
frm.setLayout(new GridLayout(4,1));

this.txt1 = new TextField();
txt1.addFocusListener(new MyFocusAdapter());
frm.add(txt1);

this.txt2 = new TextField();
txt2.addFocusListener(new MyFocusAdapter());
frm.add(txt2);

this.lbl1 = new Label();
frm.add(lbl1);

this.lbl2 = new Label();
frm.add(lbl2);

frm.setVisible(true);
}

/*
* FocusAdapter
*/
private class MyFocusAdapter implements FocusListener{

public void focusGained(FocusEvent e) {
//イベントが発生したコンポーネント
TextField txt1 = (TextField)e.getSource();
//移動元のコンポーネント
TextField txt2 = (TextField)e.getOppositeComponent();

String s1 = "";
String s2 = "";
if (txt1 != null){
s1 = txt1.getName();
}
if (txt2 != null){
s2 = txt2.getName();
}
lbl1.setText("focusGained: " + s1 + " (移動元:" + s1 + ")");
}

public void focusLost(FocusEvent e) {
//イベントが発生したコンポーネント
TextField txt1 = (TextField)e.getSource();
//移動元のコンポーネント
TextField txt2 = (TextField)e.getOppositeComponent();

String s1 = "";
String s2 = "";
if (txt1 != null){
s1 = txt1.getName();
}
if (txt2 != null){
s2 = txt2.getName();
}
lbl2.setText("focusLost: " + s1 + " (移動先:" + s2 + ")");
}

}
}

0 件のコメント: