字符串未显示在 TextField 的 TextArea 中

Posted

技术标签:

【中文标题】字符串未显示在 TextField 的 TextArea 中【英文标题】:String not showing in TextArea from TextField 【发布时间】:2015-07-16 14:38:00 【问题描述】:

我正在制作一个简单的 GUI 来检查我的字符串拼写并希望连续显示文本,所以我在文本字段中写入的内容会不断更新文本区域,我为此使用了 Document 侦听器,但我遇到了一个问题无法通过我定义的字符串(如

)在文本区域中显示来自输入字段的文本
String check = input.getText();

textarea.setText(check); 

我想知道为什么它不起作用,但是我可以使用这种方法正常工作

//String check = input.getText();

textarea.setText(input.getText());

我想使用第一种方法来预处理我的字符串以进行拼写检查

帮我解决这个问题!

工作方法:

public void setText()
    

        jTextArea1.setEditable(false);

        input.getDocument().addDocumentListener(new DocumentListener() 

            public void insertUpdate(DocumentEvent de) 
                jTextArea1.setText(input.getText());

            

            @Override
            public void removeUpdate(DocumentEvent de) 
                jTextArea1.setText(input.getText());

            

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

非工作方法:

public void setText()
    

        jTextArea1.setEditable(false);
       String check = input.getText();
        input.getDocument().addDocumentListener(new DocumentListener() 

            public void insertUpdate(DocumentEvent de) 
                jTextArea1.setText(check);

            

            @Override
            public void removeUpdate(DocumentEvent de) 
                jTextArea1.setText(check);

            

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

【问题讨论】:

应该没有区别。您是否尝试将check 设置在文档侦听器之外的其他位置? 能否请您发布整个方法。正如 kiheru 所说,这应该可以正常工作。 是的,它似乎没有区别,但它只是没有显示我的文字:(我不知道为什么 有一个根本的区别:后一个版本在文档侦听器之外获取文本。该值不会改变,只是因为getText() 稍后会返回一个不同的值。字符串是不可变的,check 一直引用与您最初设置的字符串相同的字符串。 我现在该怎么办? 【参考方案1】:

我会用一个 inputKeyTyped 监听器和一个 inputFocusLost 监听器来解决这个问题:

    private void inputKeyTyped(java.awt.event.KeyEvent evt) 

         String s;
         s = input.getText();
         output.setText(s);

    

    private void inputFocusLost(java.awt.event.FocusEvent evt)                                 

         String s;
         s = input.getText();
         output.setText(s);

    

在我的测试应用程序中,它运行良好。在每个键入的字母之后,输出都会更新。 (第一个文本字段称为“输入”,第二个称为“输出”)。

【讨论】:

你也使用了 ' output.setText(input.getText()); “我想让它工作” output.setText(s); " 其中 "s" 是一个字符串,其值为用户输入

以上是关于字符串未显示在 TextField 的 TextArea 中的主要内容,如果未能解决你的问题,请参考以下文章

models.TextField() 中的换行符未在模板中呈现

TextField 未添加到 ScrollView

Qt TextField 在 Android 设备上启动时未调用键盘

ExtJs 4 - 调整窗口大小时未保持 TextField 高度

当值为空字符串Material Swift时,TextField不显示底线

SwiftUI - 在 ForEach 中获取 TextField 数组