0

私はEclipseJuno(最新のパッチを適用)、最新のGWTおよびJavaを使用しています。

7 xnグリッドの各画像の下に、関連付けられた名前と名を連結して表示した画像をフレックステーブルに読み込んでいます。私が今やりたいのは、各画像に一意の名前を付け、それにクリックハンドラーを割り当てることです。次に、画像のクリックイベントを取得し、その人物の詳細が入力された次のビューを表示します。

フレックステーブルはこれに使用する正しいウィジェットですか、それとも画像と名前を含めるために別のウィジェットを使用する必要がありますか?

どの画像が選択されたかがわかるように、各画像に一意の名前を付けるにはどうすればよいですか?

一意の画像名をonClickリスナーに渡すにはどうすればよいですか?

これは私が使用しているコードです:

public void renderYouthMemberTable(List<YouthMember> youthMemberList) {
    if (youthMemberList != null) {
        int row = 0;
        int col = 0;
        flexTable.clear();
        for (YouthMember youthMember : youthMemberList) {
            String imageDataString = youthMember.getPhotograph();

            //Display each image with the name under it.
            Image image = new Image(imageDataString);
            flexTable.setWidget(row, col, image);
            flexTable.setWidget(row + 1, col, new Label(youthMember.getSurname() + ", " + youthMember.getFirstname()));

            //Add click handler
            image.addClickHandler((ClickHandler) this);

            //Go to next column and if the end of the columns
            //drop two rows and go to the first column
            col = col + 1;
            if (col > 7) {
                row = row + 2;
                col = 0;
            }
        }
    }

}   


public void onClick(ClickEvent event) {
    // note that in general, events can have sources that are not Widgets.
    Widget sender = (Widget) event.getSource();

    if (sender == image) {
        // handle image1 being clicked
        }
    else if (sender == image2) {
        // handle image2 being clicked
    }
}

onClickはまだ機能しません。これは私が達成したいことを示すためにここにあります。

ご協力いただきありがとうございます、

グリン

4

1 に答える 1

1

フレックステーブルはあなたのユースケースに適していると思います。

クリックイベントの場合、なぜインラインで実行しないのですか?

image.addClickHandler(new ClickHandler(){

    @Override
    public void onClick(ClickEvent event){
        // Do something
    }

});

このように、イベントの発生やを使用する必要はありませんEventBus

画像とともに他の情報を保存する必要がある場合は、必要なImageものを拡張して追加するだけです。上記のようにクリックハンドラーを実装する場合は、おそらくこの情報は必要ありません。

例えば:

public class MyImage extends Image{

    private String id;

    public MyImage(String url){
        super(url);
    }

    public MyImage(String url, String id){
        super(url);
        this.id = id;
    }

    public void setId(String id){
        this.id = id;
    }

    public String getId(){
        return id;
    }

}

次に、MyImageの代わりに使用しImageます。

更新: コンストラクターを追加

于 2013-02-13T03:11:31.377 に答える