同时在文本字段中键入时无法更新TextArea

时间:2015-05-04 18:26:52

标签: java swing netbeans documentlistener

Hello guyz我是java swing的新手并且正在处理一个项目,我无法将我在文本字段中键入的文本更新为java swing中的文本区域,我使用此Example作为参考,但我正在使用JFrame Form

在Netbeans中使用Drag and Drop制作我的GUI

这是我的代码

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:

      String s = this.jTextField1.getText();
      jTextArea1.setEditable(false);

        jTextField1.getDocument().addDocumentListener(new DocumentListener() {

            public void insertUpdate(DocumentEvent de) {
                jTextArea1.setText(s);
            }

            @Override
            public void removeUpdate(DocumentEvent de) {
                jTextArea1.setText(s);
            }

            @Override
            public void changedUpdate(DocumentEvent de) {
            //Plain text components don't fire these events.
            }
        });

    }     

我无法通过使用拖放方法来完成此操作,而它对我来说很好,就像我上面发布的示例一样。

任何帮助都将非常感谢

1 个答案:

答案 0 :(得分:1)

通常,我们不会将Listener放在另一个Listener中,这会使内部Listener被多次调用。 清除以下代码。

jTextArea1.setEditable(false);

jTextField1.getDocument().addDocumentListener(new DocumentListener() {

    public void insertUpdate(DocumentEvent de) {
        jTextArea1.setText(s);
    }

    @Override
    public void removeUpdate(DocumentEvent de) {
        jTextArea1.setText(s);
    }

    @Override
    public void changedUpdate(DocumentEvent de) {
        //Plain text components don't fire these events.
    }
});

然后使用您的Netbeans GUI Builder使jTextArea1不可编辑(在属性中),并将DocumentListener添加到jTextField1,就像您对其ActionListener所做的那样。

然后更新GUI Builder创建的新添加方法中的文本,我认为是:

public void jTextField1RemoveUpdate(DocumentEvent de)
public void jTextField1InsertUpdate(DocumentEvent de)

在每个方法中,您调用jTextArea1.setText(jTextField1.getText());