2011-12-05 4 views
-1

私は私のクラスのコンストラクタで定義されて他のクラスメソッドからActionListenerメソッドactionPerformedを実行できますか?

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

を持っています。 mainメソッドの方法actionPerformedメソッドフォームに電話する方法は?

私はちょうど私のクラスの他の部分を直接アクションリスナーを呼び出すことができますか、またはコードフォームのアクションリスナーを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もちろんあります。誰にでも呼び出せるpublic 'actionPerformed'メソッドを持っています。 – Robin

+0

@Robin私はSwing componend上でそのようなリスナーを呼び出す必要があります。どうすればいい? –

1

actionListenerRingstatic(クラス)変数(mainを仮定すると、同じクラスである)の代わりに、コンストラクタに現地確認し、それがmainからアクセスできるようになりますと、あなたはactionListenerRing.actionPerformedとしてactionPerformedメソッドを呼び出すことができます。

しかし、私は手動でこのメソッドを呼び出すことは良い考えではないと思います。

関連する問題