0

我创建了一个弹出框,它扩展了 DialogBox 并使用了一个包含值列表的 cellTable,其中一个值将被选中并插入到 textBox 中。

-我有一个 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 回答