有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

你好,guyz,我是java swing的新手,正在从事一个项目,我无法将我在文本字段中键入的文本更新为java swing中的文本区域,我使用这个Example作为参考,但我使用JFrame表单在Netbeans中使用拖放来制作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) 个答案

  1. # 1 楼答案

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

    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生成器使jTextArea1不可编辑(在属性中),并向jTextField1添加DocumentListener,就像使用ActionListener一样

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

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

    在每个方法中,都要调用jTextArea1。setText(jTextField1.getText())