- ベストアンサー
AWTでGUIを作成する際のイベントリスナーの設定方法について
- AWTでGUIを作成する際に、テキストフィールドの入力値のチェックと、フォーカスの移動について説明しています。
- 入力された値が妥当な場合は次のテキストフィールドにフォーカスを移動させ、妥当でない場合は警告のダイアログボックスを表示します。
- しかし、この方法ではエンターキーとフォーカスの移動の両方で同じ処理が実行されてしまうため、フォーカスをはずすだけにする方法を求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
次に示すように、いろんなやり方があるけど、入力チェックもキーの動作のカスタマイズも、Swingのほうが設備が整っていて楽ですよ。 --------------------------------------------------- import java.awt.*; import java.awt.event.*; public class TfFocus{ static Frame frame; static TextField tf1, tf2; static Label lab1, lab2; static boolean actionProcessed = false; public static void main(String[] args){ frame = new Frame(); tf1 = new TextField(10); tf2 = new TextField(10); lab1 = new Label("_______________________________"); lab2 = new Label("_______________________________"); frame.setLayout(new FlowLayout(FlowLayout.LEFT)); frame.add(tf1); frame.add(tf2); frame.add(lab1); frame.add(lab2); tf1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if (tf1.getText().length() != 5){ lab2.setText(""); lab1.setText("A: 5つの文字を入力しておくれ"); } else{ actionProcessed = true; lab2.setText(""); lab1.setText("A: よろしい!,次へ行け"); tf2.requestFocusInWindow(); } } }); tf1.addFocusListener(new FocusListener(){ public void focusLost(FocusEvent e){ if (actionProcessed){ return; } else if (tf1.getText().length() != 5){ lab1.setText(""); lab2.setText("F: 5つの文字を入力してね"); tf1.setText(""); tf1.requestFocusInWindow(); } else{ lab2.setText("いいわよ!では次ね"); } } public void focusGained(FocusEvent e){ } }); frame.pack(); frame.setVisible(true); frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } } ------------------------------------------------
お礼
ありがとうございます。非常に参考になりました。 動作も確認いたしました。本当にありがとうございました。