1

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

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);
                }
    });
}

我知道每个按钮上的这段代码都会记住标签的最后一个值。我如何在循环中为每个传递绑定特定按钮以显示特定标签的值?我正在尝试在检票口中实现类似 PageableListView 控件的内容。

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

4

1 回答 1

1

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

public class MyButton extends Button {

    private Label label;

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

换句话说,如果你需要一个按钮来链接到某个对象——显式地创建它。

于 2013-01-07T14:20:57.950 回答