Codenameone嵌套Lead组件

时间:2017-02-02 17:51:01

标签: codenameone

我正在尝试将带有引导组件的Container A添加到另一个Container B(带有自己的主要组件)中。但是,我无法弄清楚如何让Container A分别对来自Container B的指针事件采取行动。

以下代码是我迄今为止所做的(并且失败了)。总而言之,在setBlockLead(true)上调用Lead component A会导致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 

这样做的主要原因是在单词的上方和下方显示带有图像的按钮,这与单击容器的其余部分的行为不同。

请指教。

1 个答案:

答案 0 :(得分:0)

我们不支持嵌套引导组件,您可以使用setLeadComponent(null)禁用内部容器的引导组件,但嵌套将不起作用,因为引导组件层次结构中有很多假设。