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. 使用 anActionListener而不是 aKeyListenerKeyEvent.VK_ENTER- 有很多原因,但基本上,这就是 anActionListener的设计目的。
  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 回答