我的程序中有一个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("");
}
}
});
编辑:只是有想法可能将它作为构造函数变量传递给我可以创建的另一个对象然后能够提取并保存该字符串..这会有用吗?对于毫无疑问的问题,如果我在询问后第二次想到解决方案,那就很抱歉了。哈哈。
答案 0 :(得分:2)
ActionListener
代替KeyListener
和KeyEvent.VK_ENTER
- 原因很多,但基本上,这就是ActionListener
的目的。更像是......
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("");
}
});
}
}