我有一个Swing GUI,每个按钮都有自己的监听器。之后,我添加了另一个监听器,它为一组按钮执行一个通用逻辑:在执行所选操作之前要求保存表单数据。
我做得很简单:
myButton.addActionListener(commonListener);
myButton.addActionListener(customListener);
现在的问题是,当公共侦听器中的逻辑失败时(或者当用户中止操作时),我需要阻止调用其他侦听器。我怎么能这样做?
答案 0 :(得分:3)
我建议你做一些类似的事情来实现你的目标。
您可以拥有一个动作侦听器,并通过类层次结构继承公共功能,而不是拥有两个动作侦听器。
您可以拥有以下
的父类import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public abstract class AbstractButtonActionListener
implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if(commonActionPerformed(e)){
customActionPerfroemd(e);
}
}
public abstract void customActionPerfromed(ActionEvent e);
/**
*
* @param e
* @return true if the custom aciton should be performed
*/
public boolean commonActionPerformed(ActionEvent e) {
//method implementation
}
}
commonActionPerformed
方法将处理公共逻辑,如果流程应继续,则返回true。现在,您可以按钮添加动作侦听器,如下所示
button.addActionListener(new AbstractButtonActionListener() {
@Override
public void customActionPerformed(ActionEvent e) {
//perform the custom logic here
}
});