【问题标题】:How to disable jTextfield again when the other jTextfield is empty in javajava - 当另一个jTextfield在java中为空时如何再次禁用jTextfield
【发布时间】:2017-04-10 23:49:14
【问题描述】:

大家好! Nolankr 在这里。

我有这段代码,当我在username jField 中放置一些东西时,enables 我的password jField 但是当我从username jField 中删除我的输入时,我的password jField 保持启用状态。我希望它回到被禁用的状态。我还是个初学者,所以很抱歉。

private void usernameKeyTyped(java.awt.event.KeyEvent evt) {                                  
        String usern = username.getText();

        if(usern != null){
            password.setEnabled(true);
        }else{
                password.setEnabled(false);

             }
    }   

我尝试为它编写一个无限循环,但它只是让我的 .jar 文件停止响应/不会关闭,所以我不得不关闭 netbeans 本身并重新启动它。 xD

usernamepassword 都是 jTextfields,password 默认禁用

基本上,
if username != null then enable password but if username = null again then disable password again

【问题讨论】:

    标签: java netbeans null


    【解决方案1】:

    您可能想要的是一个document listener,它允许您检测用户名字段何时更改并采取适当的措施。

    我正在使用移动应用程序编写此答案,因此现在很难提供代码示例。

    基本上,您会在用户名上设置监听器以检查用户名是否为空或为空,并根据检查结果启用/禁用密码字段。

    编辑:

    我现在回到我的电脑前,可以提供一个代码示例。见下文:

    userNameTextBox.getDocument().addDocumentListener(new DocumentListener(){
    
        @Override
        public void insertUpdate(DocumentEvent e) {
            handleTextChange();
        }
    
        @Override
        public void removeUpdate(DocumentEvent e) {
            handleTextChange();
        }
    
        @Override
        public void changedUpdate(DocumentEvent e) {
            //Do nothing here
        }
    
        private void handleTextChange(){
            if(userNameTextBox.getText() == null ||
                userNameTextBox.getText().trim().length() == 0){
                passwordBox.setEnabled(false);
            }else{
                passwordBox.setEnabled(true);
            }
        }
    
    });
    

    请注意,changedUpdate 方法什么也不做,因为它不会在文档文本更改时触发,而是在属性更改时触发。请参阅the javadoc 了解完整详情。

    【讨论】:

    • 所以我在答案部分从另一个thread 得到了这个代码sn-p。代码似乎有错误,它说找不到 DocumentEvent xD。无论如何,感谢您将我介绍给文档听众。我会尽快研究的~
    • 您是否导入了DocumentEvent 类?
    • 哦,还有东西要导入---让我试着回来
    • username.getDocument().addDocumentListener(new DocumentListener()); 这行代码有一个错误,上面写着expected ; oh my God,这令人困惑。
    • 请阅读我的答案中的链接,看看该代码如何设置监听器
    猜你喜欢
    • 2013-01-30
    • 2014-12-04
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2019-12-30
    相关资源
    最近更新 更多