2011-12-05 109 views
-1

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

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

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

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

+0

你想做什么? – mre

+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方法对反应。但我不打算给自己的听众打电话。

+0

那么,绝对没有办法调用ActionListener? –

+0

@LucasBaizer当然有。它有一个任何人都可以调用的公共'actionPerformed'方法。 – Robin

+0

@Robin我需要在Swing components上调用这样的监听器。我会怎么做? –

1

actionListenerRing一个static(类)变量(假设main是同一类),而不是本地的构造器,那么这将是从main访问,你可以调用actionPerformed方法actionListenerRing.actionPerformed

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

相关问题