当 textArea 为空时,按钮不会被禁用

Posted

技术标签:

【中文标题】当 textArea 为空时,按钮不会被禁用【英文标题】:button doesn't turn disabled when textArea is empty 【发布时间】:2016-07-20 02:41:41 【问题描述】:

我向 jTextArea 添加了一个 documentListener,当 textArea 为空时,它应该设置一个禁用按钮。 这仅在 textArea 为空时的起点起作用,但是当我键入内容然后删除所有文本直到textArea.getText() == "" 时,该按钮仍然不会再次禁用。 这是我写的:

textArea.getDocument().addDocumentListener(new DocumentListener() 
            @Override
            public void insertUpdate(DocumentEvent e) 

                if (textArea.getText() == null) 
                    disableButton();
                 else 
                    enableButton();
                 



            

            @Override
            public void removeUpdate(DocumentEvent e) 

                if (textArea.getText() == null) 
                    disableButton();
                 else 
                    enableButton();
                

            

            @Override
            public void changedUpdate(DocumentEvent e) 

                if (textArea.getText() == null) 
                    disableButton();
                 else 
                    enableButton();
                
            

            public void enableButton() 
                clearModelMenuItem.setEnabled(true);
                discardModel.setEnabled(true);
                increaseFontSize.setEnabled(true);
                decreaseFontSize.setEnabled(true);
                incMenuItem.setEnabled(true);
                decMenuItem.setEnabled(true); 
            

这里有什么问题? 感谢您的帮助!

【问题讨论】:

textArea.getText() == null更改为textArea.getText().isEmpty() What is the problem here? - 你的SSCCE在哪里,就像你之前的许多问题一样?您的调试代码在哪里显示您正在测试的变量的值,就像您在之前的问题中被要求做的那样?在发布问题之前进行自己的基本调试。 【参考方案1】:

这是因为您实际上并没有检查文本是否为空;你正在检查它是否是null。为空的 String 和为 nullString 之间存在区别。

你需要检查

if ("".equals(textArea.getText())) ...

如果要检查是否为空。

(您可能还想检查null。)

【讨论】:

以上是关于当 textArea 为空时,按钮不会被禁用的主要内容,如果未能解决你的问题,请参考以下文章

仅当特定输入为空时,如何禁用按钮?

如何在对话框中将事件侦听器绑定到JavaFX TextFields。当字段为空时,“确定”按钮将被禁用,反之亦然

当文本字段为空时禁用警报按钮 Swift 3

当 1 个或多个 TextBox 字段为空时禁用按钮

当数据表为空时,我们如何禁用数据表导出按钮(或防止点击事件)?

输入为空时如何禁用按钮?