Java 让ActionListener在JTextField中侦听更改,而不是只输入?

Java 让ActionListener在JTextField中侦听更改,而不是只输入?,java,swing,actionlistener,jtextfield,Java,Swing,Actionlistener,Jtextfield,因此,您可能知道,如果您有一个文本字段,并且向其中添加了一个ActionListener,那么它将只侦听enter按钮的按键。然而,我想让我的ActionListener监听的文本中的更改。所以基本上我有这个: public static JPanel mainPanel() { JPanel mainp = new JPanel(); JTextArea areap = new JTextArea("Some text in the textarea");

因此,您可能知道,如果您有一个文本字段,并且向其中添加了一个ActionListener,那么它将只侦听enter按钮的按键。然而,我想让我的ActionListener监听的文本中的更改。所以基本上我有这个:

    public static JPanel mainPanel() { 
    JPanel mainp = new JPanel(); 
    JTextArea areap = new JTextArea("Some text in the textarea"); 
    JTextField fieldp = new JTextField("Edit this"); 
    areap.setEditable(false); 
    fieldp.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
             if(//change in textfield, for instance a letterpress or space bar)
                   { 
                        //Do this
                   } 
        }
    });
    mainp.add(areap);
    mainp.add(fieldp); 
    return mainp;
}
我能听到文本中的更改(如actionPerformed事件中记录的更改)吗

来自


使用基础文档:

myTextField.getDocument().addDocumentListener();

是的,但是什么是文档监听器,您如何使用它?你没有真正回答这个问题

我的应用程序的用户界面中有一个JTextField。当用户对其进行任何更改时,我希望检查附近的JCheckBox。目的是告诉应用程序使用输入的值。用户经常在那里输入一个值,但是如果他们没有明确告诉应用程序使用它,那么应用程序会继续忽略它。我不应该“培训”用户,而是应该遵循最小惊讶的原则,自动选中“使用此值”框


但我该如何倾听变化呢?你们不能告诉我一个简单的方法,而不是“教育我”文档监听器吗?

文档是JavaSwing用来在JTextField中存储文本的机制。DocumentListener是实现DocumentListener接口的对象,因此您可以列出文档中的更改,即JTextField文本中的更改

要使用document和documentlistener功能,如上所述,请扩展您的类(可能但不一定是JFrame),以便它实现documentlistener接口。实现接口的所有方法(很可能您的java ide可以半自动地为您实现)。仅供参考,DocumentListener接口有三种方法,一种用于插入字符(到文本字段中),一个用于删除字符,另一个用于更改属性。您需要在添加字符(第一个)或删除字符(第二个)时实现前两个。要获取更改的文本,您可以向文档请求文本,或者更简单地调用myTextField.getText()

这是吹牛


菲尔·特洛伊(Phil Troy)

PropertyChangeEvent可能与之重复吗?当我问这个问题时,我暗示我知道ActionListener是如何工作的,因此我也应该知道如何(弄清楚如何工作)DocumentListener可以工作。答案已经足够了。如前所述,您可以将DocumentListener添加到JTextField的文档中,并可以查看API Javadocs以了解特定侦听器具有哪些功能。也许您可以从中了解一些情况。请先看以下内容:[如何回答]()