保存匿名内部类中生成的数据

时间:2013-04-24 03:42:58

标签: java swing jtextfield inner-classes anonymous-inner-class

我的程序中有一个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("");

            }
        }
    });
编辑:只是有想法可能将它作为构造函数变量传递给我可以创建的另一个对象然后能够提取并保存该字符串..这会有用吗?对于毫无疑问的问题,如果我在询问后第二次想到解决方案,那就很抱歉了。哈哈。

1 个答案:

答案 0 :(得分:2)

  1. 使用ActionListener代替KeyListenerKeyEvent.VK_ENTER - 原因很多,但基本上,这就是ActionListener的目的。
  2. 使用类字段而不是本地变量...
  3. 更像是......

    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("");
                }
            });
        }
    }