我有
ActionListener actionListenerRing = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
在我的类构造函数中定义。如何调用actionPerformed
方法表单main
方法?
我只是想知道如果我可以直接从我的类的任何其他部分调用动作侦听器,或者我应该将代码形式动作侦听器移动到其他方法,以便ActioListener和其他类方法都可以访问。
答案 0 :(得分:3)
通常,如果不将其附加到某个内容,则不会创建侦听器。因此,如果您的main
方法必须直接调用此类ActionListener
,那么您的设计可能会出现问题。也许你可以对你试图实现的目标发表评论。
您可能希望阅读whole observer design pattern,但简而言之,如果您希望在执行操作时获得通知,则可以将侦听器添加到另一个对象。例如:
JButton button;//a button I obtained from somewhere and in
// which I am interested
button.addActionListener( new ActionListener(){
public void actionPerformed( ActionEvent actionEvent ){
//do something with the fact that the button has been pressed
}
});
在上面的例子中,按钮会在按下时通知我添加的ActionListener
,我可以通过将相关代码放在actionPerformed
方法中来做出反应。但我不打算自己打听我的听众。
答案 1 :(得分:1)
使actionListenerRing
成为static
(类)变量(假设main
在同一个类中)而不是构造函数的本地变量,然后可以从main
访问它您可以将actionPerformed
方法称为actionListenerRing.actionPerformed
。
但我认为手动调用该方法并不是一个好主意。