多个Jtextfield在Jbutton启用前填充 [英] Multiple Jtextfields to be filled before Jbutton enable

查看:140
本文介绍了多个Jtextfield在Jbutton启用前填充的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我非常需要一些帮助我已经搜索关于Jtextfield在jbutton启用之前填充,DocumentListener大多数人使用确定如果Jtextfield是填充。我试过DocumentListener和它的工作,但所有我想要的是所有的Jtextfield必须不是空之前的Jbutton启用这里是我的代码。

Hi I badly need some help I already search about Jtextfield to be filled before jbutton enables, DocumentListener most people use to determined if Jtextfield is being populated. I tried DocumentListener and it works but all I want is all Jtextfield must be not empty before the Jbutton enables here is my code.

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

        @Override
        public void insertUpdate(DocumentEvent e) {
            change();
        }

        @Override
        public void removeUpdate(DocumentEvent e) {
            change();
        }

        @Override
        public void changedUpdate(DocumentEvent e) {
            change();
        }

        private void change(){

            if (Ftext.getText().equals("") && Mtext.getText().equals("") && Ltext.getText().equals("") && Addtext.getText().equals("")) {
                SaveButton.setEnabled(false);
            } else {
                SaveButton.setEnabled(true);
            }
           }
    });


推荐答案

if(Ftext.getText ().equals()&& Mtext.getText()。equals()&& Ltext.getText()。equals()&& ))

表示所有字段必须为空。有些时候你需要大声读出这个逻辑...

Means that all the fields must be empty. Some times you need to read this logic aloud...

如果字段为空AND字段为空AND字段为空...

"if field is empty AND field is empty AND field is empty..."

如果你使用 || (或),这意味着如果任何一个字段为空,语句将是 true 例如...

If you used || (or) instead, it would mean that if any one of the fields was empty the statement would be true for example...

if (Ftext.getText().equals("") || 
    Mtext.getText().equals("") ||
    Ltext.getText().equals("") ||
    Addtext.getText().equals("")) {...


$ b < .getText()。isEmpty()或 .getText()。trim()。isEmpty()

您还可以考虑编写一个 DocumentListener 实现,而不是为每个字段创建一个新的匿名类



You might also consider writing a single DocumentListener implementation instead of creating a new anonymous class for each field

public class FieldValidationHandler implements DocumentListener() {

    private List<JTextField> monitorFields;

    public FieldValidationHandler(JTextField... fields) {
        monitorFields = Arrays.asList(fields);
        for (JTextField field : monitorFields) {
            field.getDocument().addDocumentListener(this);
        }
    }

    @Override
    public void insertUpdate(DocumentEvent e) {
        change();
    }

    @Override
    public void removeUpdate(DocumentEvent e) {
        change();
    }

    @Override
    public void changedUpdate(DocumentEvent e) {
        change();
    }

    private void change(){

        boolean enabled = true;
        for (JTextField field : monitorFields) {
            if (field.getText().trim().isEmpty()) {
                enabled = false;
                break;
            }
        }
        SaveButton.setEnabled(enabled);
    }
}

然后,您只需创建一个实例。 。

Then you'd just create a single instance...

FieldValidationHandler handler = new FieldValidationHandler(Ftext, Mtext, Ltext, Addtext);

现在,这种方法有点鬼祟,因为它添加了 DocumentListener

Now, this approach is a little sneaky, in that it adds the DocumentListener to the fields you specify via the constructor automatically.

另一种方法可能是有一些类型的验证控制器,你将传递到这个处理程序,当调用 change 时,它会调用某种validate方法。

Another approach might be to have some kind "Validation" controller, that you would pass to this handler and it would call some kind of "validate" method when change was called.

我个人有一个注册和注销过程,这将允许你根据需要添加或删除字段

I would personally have a "register" and "unregister" process which would allow you to add or remove fields as you need to

这篇关于多个Jtextfield在Jbutton启用前填充的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆