2017-02-02 5 views
0

Container Aの鉛成分を別のContainer B(独自の鉛成分を含む)に追加しようとしています。しかし、Container AContainer Bのポインタイベントに別々に動作させる方法を理解できません。コードネームネストされた鉛成分

以下のコードは、私がこれまで行ってきたことです(失敗しました)。要約すると、Lead component AsetBlockLead(true)を呼び出すと、Lead component Aはそれ自身のアクションリスナーを呼び出すことができますが、残りの部分には影響しません。Container A

Container conB = new Container(); 
    Button leadB = new Button("b"); 
    leadB.addActionListener((evt) -> { 
     System.out.println("Lead B"); 
    }); 
    conB.setLeadComponent(leadB); 

    Container conA = new Container(BoxLayout.y()); 
    Button leadA = new Button("a"); 
    leadA.addActionListener((evt) -> { 
     System.out.println("Lead A"); 
    }); 
    conA.add(leadA); 
    conA.add("Another label"); 
    conB.add(leadB).add(conA); 

    conA.setBlockLead(true); //This has no effect 
    conA.setLeadComponent(leadA); //Apparently no effect either 
    leadA.setBlockLead(true); 
    //Clicking on leadA (and only leadA) will print "Lead A", but 
    //Clicking on Label will not 

この主な理由は、上記容器の残りの部分をクリックすると異なって行動しなければならない言葉、以下の両方の画像でボタンを表示することです。

アドバイスをしてください。

答えて

0

ネスティングの鉛コンポーネントはサポートされていません。setLeadComponent(null)を使用して内部コンテナの鉛コンポーネントを無効にできますが、鉛コンポーネントの階層内には多くの仮定があるため、ネスティングは機能しません。

+0

誰かにとって参考になる場合は、LeadコンポーネントのActionListenerでポインタの位置を確認してしまいました。アニメーションはオフですが、少なくともイベントが発生します。 –

関連する問題