0

プログラムに JTextField があり、匿名の内部クラスを使用してキーボード リスナーを接続しました。リスナーはテキスト ボックスをクリアし、現在そこにある単語を保存します。

コードの他の部分で得た単語を使用できるようにしたいのですが、内部クラスで使用されるすべての変数に final タグを付ける必要があることはわかっています。

これが私の簡略化されたコードで、皆さんにアイデアを提供します-userWordを使用できるようにしたいです

    typingArea.addKeyListener(new KeyAdapter() {
        public void keyPressed (KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) { // enter key is pressed
                userWord = typingArea.getText().toLowerCase();
                typingArea.setText("");

            }
        }
    });

編集:コンストラクター変数として、作成できる別のオブジェクトに渡し、その文字列を抽出して保存できるようにするという考えがありました..これは機能しますか? 質問してからすぐに解決策を文字通り考えた場合、無意味な質問で申し訳ありません(笑)。

4

1 に答える 1

2
  1. andのActionListener代わりにan を使用します。理由はたくさんありますが、基本的には、これが an の設計目的です。KeyListenerKeyEvent.VK_ENTERActionListener
  2. ローカル変数の代わりにクラス フィールドを使用する...

もっと好き...

public class MyForm extends JPanel {

    private JTextField typingArea;
    private String userWord; 

    public MyForm() {

        typingArea = new JTextField();
        typingArea.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                userWord = typingArea.getText().toLowerCase();
                typingArea.setText("");
            }
        });
    }
}
于 2013-04-24T03:45:27.023 に答える