2009年5月4日月曜日

Java AWT TextFieldコンポーネント

1行だけのテキストを扱うためのコンポーネントです。

Enterキーを押すとActionListenerクラスのActionEventメソッドが呼ばれます。
キーイベントは、KeyListenerクラスのkeyPressedメソッド、keyReleasedメソッド、keyTypedメソッドが呼ばれます。
テキストの値が変更されるとTextListenerクラスのtextValueChangedメソッドが呼ばれます。


package MyPackage1;

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

public class TextFieldSample {

/*
* エントリーポイント
*/
public static void main(String args[]){
new TextFieldSample();
}

TextField txt1;
Label lbl1;
Label lbl2;
Label lbl3;
Panel p1;

/*
* コンストラクタ
*/
public TextFieldSample(){
//Frameを作成します。
Frame frm = new Frame("TextFieldSample");
frm.setSize(300,300);
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
//TextFieldを作成しイベントリスナーを追加します。
txt1 = new TextField();
txt1.addActionListener(new txt1ActionAdapter());
txt1.addKeyListener(new txt1KeyAdapter());
txt1.addTextListener(new txt1TextAdapter());
//ラベルを作成します。
lbl1 = new Label();
lbl2 = new Label();
lbl3 = new Label();
//パネルを作成し、コンポーネントを追加します。
p1 = new Panel();
p1.setLayout(new GridLayout(3,1));
p1.add(lbl1);
p1.add(lbl2);
p1.add(lbl3);
//コンポーネントを追加します。
frm.add(txt1,BorderLayout.NORTH);
frm.add(p1,BorderLayout.CENTER);
//Frameを表示します。
frm.setVisible(true);
}

/*
* txt1のActionListener
*/
private class txt1ActionAdapter implements ActionListener{
public void actionPerformed(ActionEvent ev) {
//Enterキーが押された時に呼ばれます。
lbl2.setText("actionPerformed:" + txt1.getText());
}
}
/*
* txt1のKeyListener
*/
private class txt1KeyAdapter implements KeyListener{
@Override
public void keyPressed(KeyEvent ev) {
//キーが押された時に呼ばれます。
lbl1.setText("keyPressed:" + String.valueOf(ev.getKeyChar()));
}

@Override
public void keyReleased(KeyEvent ev) {
//キーが離された時に呼ばれます。
}

@Override
public void keyTyped(KeyEvent ev) {
//キーがタイプされた時に呼ばれます。
}

}
/*
* txt1のTextListener
*/
private class txt1TextAdapter implements TextListener{

@Override
public void textValueChanged(TextEvent arg0) {
//テキストの値が変更した時に呼ばれます。
lbl3.setText("ValueChanged:"+ txt1.getText());
}

}

}


0 件のコメント: