我有一个大表,每个单元格中都有一个按钮。这些按钮非常相似,功能几乎相同。如果我以这种方式为每个按钮添加一个动作监听器:
tmp.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent evt) {
proposition = proposition + action;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
updatePropositionPanel();
}
});
}
});
实际上,每个动作侦听器与所有其他侦听器的不同之处在于action
. proposition
并且updatePropositionPanel
是类的一个字段和一个方法。
首先,我认为如果我不使用内部类,我可以让它更短。所以,我决定编写一个新的 ActionListener 类。但我意识到,在这种情况下,“命题”对这个类的实例是不可见的。
然后我决定将 actionPerformed 方法添加到当前类并这样做
addActionListener(this)
:但是我意识到我不知道如何为 actionPerformed 方法提供参数。
那么它是怎样工作的。我可以以一种简短而优雅的方式添加一个动作监听器吗?
添加:
我喜欢用构造函数编写内部类的想法,该构造函数可以接受一些参数和 actioPerformed 方法,该方法可以使用构造函数中给出的参数。我开始这样做,然后意识到它会与其他内部匿名类产生冲突(就像上面给定的代码一样使用)。所以,我想我会创建另一个类(不是内部类)。