2016-09-27 13 views
1

多くのボタンを含む1つの親にイベントハンドラを追加します。そのイベントリスナーは、バブルイベントを分析して、私が対象とすることができる子ノードのマッチを見つけます。言い換えれば、今私はこれを行う:Javaは、複数のボタン上のイベントハンドラを動的かつクリーンな方法で使用します。

私はすべてのボタンがイベントハンドラに添付されているが、私は欲しいものではない。私はただ親にハンドラを1つ置き、それを使っていろいろなボタンを起動させるだけです。出来ますか?あなたの親のコード内で次に

public class MyButton extends Button { 
    public MyButton(MyHandler handler) { 
     super(); 
     setOnAction(handler); 
    } 
} 

MyHandler handler = new MyHandler(...); 
MyButton menuButton1 = new MyButton(handler); 
MyButton menuButton2 = new MyButton(handler); 
... 

を私はあなたがやりたい理由はわからない

+0

'Button'を拡張し、すべてのボタンに適用するためにリスナーを渡す独自のカスタム' Button'クラスを作ることができます。 – Zarwan

+0

@Zar簡単な例を表示できますか? – Asperger

+0

私は答えを書くでしょう。 – Zarwan

答えて

1

一つの方法は、あなたのためのリスナーを適用するために、独自のButtonクラスを作ることですこれはハンドラがすべてのボタンからイベントを受け取るためです。あなたはそれらを区別する必要があります。

編集:実際には、質問をもう一度読んだ後で、これがあなたが求めているものかどうかはわかりません。リスナーを親に適用し、それを間接的にボタンに渡したいとしますか?それが可能かどうかはわかりません。それは親のオブジェクトのタイプに依存し、親がイベントを受け取る場合でも、クリックされたボタンを知ることはできません(タッチの座標をチェックするのと同じように、ボタンの座標で、私はそれが価値があるとは思わない)。このソリューションでは、1つのMyHandlerオブジェクトに保持していますが、これも元のソリューションの場合と同じです。

+0

本当にうんちですが、それは私が受け入れた代替です。あなたは、それが汚い回避策なしではjavaでは不可能であると説明しました。あなたの情報は貴重です。 – Asperger

+0

助けになるのはうれしいです。 – Zarwan

関連する問題