您必须为您的按钮添加一个事件侦听器,如果您想走得更远,更昂贵的是ActionListener,您可以使用Action 接口,其行为类似于具有有用常量和方法的按钮控制器。
ActionListener 示例:
myButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
// make validations here, if validation not passed
// show the dialog you can use -->
// JOptionPane.showMessageDialog(null,"Error happen!");
//else you have to switch to another view
}
})
更多信息和更好的例子:How to use buttons。
下一个完全是个人的,当我必须在按下按钮时验证表单时,我想在另一个类中分离验证逻辑。我制作了定义validate() 方法的自定义界面
public interface FieldValidator{
final String MY_VALIDATOR = "myValidator";
void validate() throws ValidationException
//Note: ValidationException is a custom exception
}
在JComponent 中,我想验证一个我定义自定义验证器的文本字段。
textfield.putClientProperty(FieldValidator.VALIDATOR, new FieldValidator(){
@Override
public void validate() throws ValidationException{
if(textfield.getText().isEmpty())
throw new ValidationException("text is empty");
}
});
一个包含表单中所有 JComponent 的具体类。
public MyValidator 实现 FieldValidator{
私有最终 JComponent[] 组件;
public MyValidator(JComponent ... components){
this.components=components;
}
@Override
public void validate() throws ValidationException{
for(JComponent component : components){
((FieldValidator)component.getClientProperty(VALIDATOR)).validate();
}
}
}
然后在客户端代码中
FieldValidator fieldsValidator = new MyValidator(checkbox1,checkbox2,textfield);
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt){
try{
fieldsValidator.validate();
//all it's ok change the view
}catch(ValidationException ex){
JOptionPane.showMessageDialog(null,"Error happen");// error happen
}
}
});