0

DialogBox を拡張し、値のリストを含む cellTable を使用するポップアップ ボックスを作成しました。そのうちの 1 つが選択され、textBox に挿入されます。

- 行の 1 つがクリックされたときに発生する onSelectionChange ハンドラーがあります。

-同じ行がダブルクリックされたときに起動される onDoubleClick ハンドラがあります。

どちらも、もう一方がコメントアウトされている場合に機能します。しかし、それらが両方ともライブ コードにある場合、どちらが最初に記述されても、もう一方によって上書きされ、呼び出されなくなります。

これを回避する方法はありますか?

コード スニビット:

final SingleSelectionModel<popUpBoxContent> selectionModel= new <popUpBoxContent>();
cellTable.setSelectionModel(selectionModel);
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler(){
public void onSelectionChange (selectionChangeEvent event){
//Do something
}});


final SingleSelectionModel<popUpBoxContent> selectionModel2= new <popUpBoxContent>();
cellTable.setSelectionModel(selectionMode2);
cellTable.addDomHandler(new DoubleClickHandler(){
public void onDoubleClick(final DoubleClickEvent event){
//Do something else
}},

DoubleClickEvent.getType());

ありがとうございました!

4

1 に答える 1

1

はい、スニペットで確認できる内容から上書きされます。「popUpBoxContent」がCellTable(私はcellTableがCellTableであると推測しています)が入力されているデータ型であると仮定すると、これを試して動作するかどうかを確認できます:

final SingleSelectionModel<PopUpBoxContent> selectionModel = new SingleSelectionModel<PopUpBoxContent>();
cellTable.setSelectionModel(selectionModel);
cellTable.addDomHandler(new DoubleClickHandler() {
    public void onDoubleClick(final DoubleClickEvent event) {
        PopUpBoxContent selected = selectionModel.getSelectedObject();
        if (selected != null) {
            System.out.println("double clicked");
        }
    }
},
DoubleClickEvent.getType());

selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
    public void onSelectionChange(SelectionChangeEvent event) {
        System.out.println("clicked");
    }
});
于 2013-10-02T08:12:19.907 に答える