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 に答える