Vaadin - 多个按钮实例 - 不同的单击侦听器操作

时间:2012-12-29 23:26:14

标签: java vaadin

我在显示包含例如标签和按钮的多个面板时遇到问题。我想听一下按钮点击并从面板中显示标签值。 代码看起来像这样:

for(int i=0; i < 5;i++){
 Panel p = new Panel("panel "+i);
 Label l = new Label("label "+ i);
 p.addComponent(l);
 Button show = new Button("Show Label in subWindow", new Button.ClickListener() {
                public void buttonClick(ClickEvent event) {
                    Window sub = new Window("testing "+label);
                    getMainWindow().addWindow(sub);
                }
    });
}

我知道每个按钮上的代码都会记住标签的最后一个值。 我如何在循环中为每个传递绑定特定按钮来显示特定标签的值? 我试图在wicket中实现像PageableListView控件这样的东西。

我希望你能理解我的问题! 谢谢!

1 个答案:

答案 0 :(得分:1)

为什么不能将Button子类化并使Label实例(Panel实例或任何其他实例)成为其状态的一部分?

public class MyButton extends Button {

    private Label label;

    public MyButton (String title, Label l) {
        super(...);
        this.label = l;
        addListener(...);
    }
}

换句话说,如果您需要一个按钮来链接某个对象 - 请明确创建它。