Java Individual ActionListeners和一个Overarching ActionListener

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大师来帮助我.

MBy*_*ByD 7

您可以继承自己的实现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)