• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:awtでGUIを作成しているのですがイベントリスナーのことで)

AWTでGUIを作成する際のイベントリスナーの設定方法について

このQ&Aのポイント
  • AWTでGUIを作成する際に、テキストフィールドの入力値のチェックと、フォーカスの移動について説明しています。
  • 入力された値が妥当な場合は次のテキストフィールドにフォーカスを移動させ、妥当でない場合は警告のダイアログボックスを表示します。
  • しかし、この方法ではエンターキーとフォーカスの移動の両方で同じ処理が実行されてしまうため、フォーカスをはずすだけにする方法を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.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);    }   });  } } ------------------------------------------------

ossu
質問者

お礼

ありがとうございます。非常に参考になりました。 動作も確認いたしました。本当にありがとうございました。

関連するQ&A