Java 仅当验证为True时启用Jbutton
验证swing应用程序的输入字段(如文本字段、组合框等)并让用户仅在一切正常时按下保存按钮的最佳方法是什么。假设搜索功能也在同一界面中。所以搜索记录也会填充输入字段。但在这种情况下,“保存”按钮应保持禁用状态Java 仅当验证为True时启用Jbutton,java,swing,validation,jbutton,Java,Swing,Validation,Jbutton,验证swing应用程序的输入字段(如文本字段、组合框等)并让用户仅在一切正常时按下保存按钮的最佳方法是什么。假设搜索功能也在同一界面中。所以搜索记录也会填充输入字段。但在这种情况下,“保存”按钮应保持禁用状态 initComponents(); btnSave.setEnabled(false); txt1.getDocument().addDocumentListener(new DocumentListener() { @Over
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);
}
}
});
创建一个方法来检查是否所有输入都已完成或/和所有验证都已通过,并最终返回一个布尔值。
public boolean validate(...){
//some stuff
if(validated){
return true;
}else{
return false;
}
}
然后你可以像这样使用它。button.setEnabled(validate(...));
你试过这样吗
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);
}
});
在两个位置使用
setEnabled()
调节保存按钮的enabled
属性:
- 在您的
实现中,应在附加到每个相关组件的
中执行InputVerifier
。本教程和一些例子被引用shouldYieldFocus()
- 在组件的普通侦听器中