Som*_*ica 1 java swing awt jbutton actionlistener
也许我会以错误的方式解决这个问题.让我知道使用Swing和AWT,我在一个框架上设置了几个按钮,它们每个都有一个ActionListener对应于它们的特定功能IE
JButton foo_button = new JButton("Foo-Me");
foo_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//Fancy schmancy code work
}
})
JButton bar_button = new JButton("Bar None");
bar_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//Fancy schmancy code work
}
})
Run Code Online (Sandbox Code Playgroud)
所以每个按钮都做自己的事情.但是,如果我希望所有按钮都做某件事(每个按钮的方法相同),在我的情况下,清除标签,然后再做他们自己的事情.
显然我可以将whatever_label.setText("")添加到每个actionPerformed(),但这需要大量的重复,我不是那么喜欢的东西.
哦Java和Swing大师来帮助我.
您可以继承自己的实现ActionListener:
private static abstract class MyListener implements ActionListener {
@Override
final public void actionPerformed(ActionEvent evt) {
theSameTask();
uniqueTask(evt);
}
private void theSameTask() {
// the identical task
}
public abstract void uniqueTask(ActionEvent evt);
}
Run Code Online (Sandbox Code Playgroud)
然后,新的听众将如下所示:
JButton bar_button = new JButton("Bar None");
bar_button.addActionListener(new MyListener() {
@Override public void uniqueTask(ActionEvent evt) {
//Fancy schmancy code work
}
});
Run Code Online (Sandbox Code Playgroud)