我可以从其他类方法执行ActionListener方法actionPerformed吗?

时间:2011-12-05 17:58:48

标签: java swing actionlistener

我有

ActionListener actionListenerRing = new ActionListener() {
              public void actionPerformed(ActionEvent actionEvent) {

在我的类构造函数中定义。如何调用actionPerformed方法表单main方法?

我只是想知道如果我可以直接从我的类的任何其他部分调用动作侦听器,或者我应该将代码形式动作侦听器移动到其他方法,以便ActioListener和其他类方法都可以访问。

2 个答案:

答案 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

但我认为手动调用该方法并不是一个好主意。