验证swing应用程序输入字段(如文本字段,组合框等)的最佳方法是什么,并且只有在一切正常时,才允许用户按“保存”按钮。假设搜索功能也在同一个界面中。因此搜索记录也会填满输入字段。但在这种情况下,保存按钮应保持禁用状态。
initComponents();
btnSave.setEnabled(false);
txt1.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void changedUpdate(DocumentEvent e) {
}
@Override
public void removeUpdate(DocumentEvent e) {
validate(txt1.getText(),e);
}
@Override
public void insertUpdate(DocumentEvent e) {
validate(txt1.getText(),e);
}
public void validate(String enteredText,DocumentEvent e) {
String currText = "";
try {
Document doc = (Document) e.getDocument();
currText = doc.getText(0, doc.getLength());
} catch (BadLocationException e1) {
}
if(enteredText.equals(currText)){
//if validated successfully
btnSave.setEnabled(false);
}else{
btnSave.setEnabled(true);
}
}
});
答案 0 :(得分:1)
final JTextField textField = new JTextField();
final JButton submitBtn = new JButton();
submitBtn.setEnabled(true);
textField.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
validate(e);
}
public void removeUpdate(DocumentEvent e) {
validate(e);
}
public void insertUpdate(DocumentEvent e) {
validate(e);
}
public void validate(String enteredText) {
String currText = "";
try {
Document doc = (Document)e.getDocument();
currText = doc.getText(0, doc.getLength());
} catch (BadLocationException e1) {
e1.printStackTrace();
}
//validation of currText here
//if validated successfully
submitBtn.setEnabled(true);
//else
submitBtn.setEnabled(false);
}
});
答案 1 :(得分:1)
在两个地方使用enabled
调整保存按钮的setEnabled()
属性:
在每个相关组件附带的shouldYieldFocus()
中InputVerifier
的实施中。本教程和一些示例引用here。
在组件的普通侦听器中。
答案 2 :(得分:0)
创建一个方法来检查是否所有输入都已完成或/并且所有验证都已通过,最后返回一个布尔值。
public boolean validate(...){
//some stuff
if(validated){
return true;
}else{
return false;
}
}
然后你可以像使用它一样使用它。
button.setEnabled(validate(...));