playButtonActionListener

playButtonActionListener

This question already has answers here:
How do I make a JButton with an anonymous innerclass actionlistener remove itself on click?
                                
                                    (2个答案)
                                
                        
                3年前关闭。
            
        

我有一些代码可以做到这一点:


创建一个ActionListener

一个。从将其连接到的按钮上移除自身(请参阅2。)

b。还有其他事情吗
将该ActionListener添加到按钮中


(在代码中:)

ActionListener playButtonActionListener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        playButton.removeActionListener(playButtonActionListener);
        // does some other stuff
    }
};

playButton.addActionListener(playButtonActionListener);


在编译时,Java将第4行报告为错误(variable playButtonActionListener might not have been initialized),并拒绝编译。这可能是因为playButtonActionListener在技术上直到结束括号才完全初始化,并且removeActionListener(playButtonActionListener)需要在playButtonActionListener初始化之后发生。

有没有什么办法解决这一问题?我是否需要完全改变编写此块的方式?还是有某种@标志或其他解决方案?

最佳答案

更改

playButton.removeActionListener(playButtonActionListener);


与:

playButton.removeActionListener(this);


由于您位于ActionListener匿名类中,因此this表示该类的当前实例。

10-07 15:12