我创建了一个扩展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());
谢谢!
答案 0 :(得分: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");
}
});