Java 启用Jbutton之前要填充的多个Jtextfields
您好,我非常需要一些帮助,我已经在jbutton启用之前搜索了要填充的Jtextfield,大多数人使用DocumentListener来确定是否正在填充Jtextfield。我尝试了DocumentListener,它可以工作,但我想要的是,在Jbutton启用之前,所有Jtextfield必须不为空。这是我的代码Java 启用Jbutton之前要填充的多个Jtextfields,java,swing,comparison,jbutton,documentlistener,Java,Swing,Comparison,Jbutton,Documentlistener,您好,我非常需要一些帮助,我已经在jbutton启用之前搜索了要填充的Jtextfield,大多数人使用DocumentListener来确定是否正在填充Jtextfield。我尝试了DocumentListener,它可以工作,但我想要的是,在Jbutton启用之前,所有Jtextfield必须不为空。这是我的代码 Ftext.getDocument().addDocumentListener(new DocumentListener() { @Override
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(“”)&&Addtext.getText().equals(“”)
表示所有字段都必须为空。有时候你需要大声地读这个逻辑
“如果字段为空且字段为空且字段为空…”
如果使用了|
(或),则表示如果其中任何一个字段为空,则语句将为true
,例如
if (Ftext.getText().equals("") ||
Mtext.getText().equals("") ||
Ltext.getText().equals("") ||
Addtext.getText().equals("")) {...
您还应该考虑使用<代码> .GETTHETER()/ISMPUTY()/<代码>或<代码> .GETTHORE().TIMEMER(.IMPUTY)(),如果字段不应该包含空格。< /P>
您也可以考虑编写一个单代码>文档监听器< /C>实现,而不是为每个字段
创建一个新的匿名类。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);
}
}
现在,这种方法有点狡猾,因为它会自动将DocumentListener
添加到通过构造函数指定的字段中
另一种方法可能是使用某种“验证”控制器,您可以将其传递给此处理程序,当调用change
时,它将调用某种“验证”方法
这会将侦听器与字段分开,但这只是当时的上下文问题
我个人会有一个“注册”和“取消注册”的过程,允许您根据需要添加或删除字段谢谢您的快速响应,先生,我还是java的新手,我会尝试这个。
FieldValidationHandler handler = new FieldValidationHandler(Ftext, Mtext, Ltext, Addtext);