1
下面给出的代码对一个JTextField进行实时验证。输入一些值到txt1
启用保存按钮并删除值将重置保存按钮以禁用。我使用Netbeans作为IDE。添加DocumentListener以验证多个JTextField
我的Swing应用程序有几个JTextFields。我想要做的是在检查多个JTextField的有效性后启用Save按钮。如果任何文本字段为空,则必须禁用btnSave
。
有人能帮助我扩展这个程序来验证多个JTextFields吗?
public NewJFrame() {
initComponents();
btnSave.setEnabled(false);
txt1.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent e) {
}
@Override
public void removeUpdate(DocumentEvent e) {
validate(e);
}
@Override
public void insertUpdate(DocumentEvent e) {
validate(e);
}
public void validate(DocumentEvent e) {
String currText = "";
try {
Document doc = (Document) e.getDocument();
currText = doc.getText(0, doc.getLength());
} catch (BadLocationException e1) {
e1.printStackTrace();
}
if (currText.isEmpty()) {
Runnable doRun = new Runnable() {
@Override
public void run() {
isValidFromTextField1 = false;
validFormatterLimit();
}
};
SwingUtilities.invokeLater(doRun);
} else {
Runnable doRun = new Runnable() {
@Override
public void run() {
isValidFromTextField1 = true;
validFormatterLimit();
}
};
SwingUtilities.invokeLater(doRun);
}
}
});
txt2.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent e) {
}
@Override
public void removeUpdate(DocumentEvent e) {
validate(e);
}
@Override
public void insertUpdate(DocumentEvent e) {
validate(e);
}
public void validate(DocumentEvent e) {
String currText = "";
try {
Document doc = (Document) e.getDocument();
currText = doc.getText(0, doc.getLength());
} catch (BadLocationException e1) {
e1.printStackTrace();
}
if (currText.isEmpty()) {
Runnable doRun = new Runnable() {
@Override
public void run() {
isValidFromTextField2 = false;
validFormatterLimit();
}
};
SwingUtilities.invokeLater(doRun);
} else {
Runnable doRun = new Runnable() {
@Override
public void run() {
isValidFromTextField2 = true;
validFormatterLimit();
}
};
SwingUtilities.invokeLater(doRun);
}
}
});
}
public void validFormatterLimit() {
if (isValidFromTextField1 == true && isValidFromTextField2 == true) {
btnSave.setEnabled(true);
} else {
btnSave.setEnabled(false);
}
}
Thnx快速响应。我会检查一下并让你知道。 – amal 2013-04-22 08:25:46
thnx很多。它完美的作品。 – amal 2013-04-22 09:58:15
不用客气 – mKorbel 2013-04-22 10:14:46