Java 选中/取消选中CheckboxCell,单击一行-GWT
我有一个单元格表,第一列是复选框。当整行出现任何单击事件时,必须选中或取消选中我的复选框。以下代码用于创建多选模型、创建CheckboxCell以及为单元格表创建列Java 选中/取消选中CheckboxCell,单击一行-GWT,java,checkbox,gwt,onclick,gwt-celltable,Java,Checkbox,Gwt,Onclick,Gwt Celltable,我有一个单元格表,第一列是复选框。当整行出现任何单击事件时,必须选中或取消选中我的复选框。以下代码用于创建多选模型、创建CheckboxCell以及为单元格表创建列 MultiSelectionModel<Object> selectionModel = new MultiSelectionModel<>(); table.setSelectionModel(selectionModel); CheckboxCell selectedCell = new
MultiSelectionModel<Object> selectionModel = new MultiSelectionModel<>();
table.setSelectionModel(selectionModel);
CheckboxCell selectedCell = new CheckboxCell();
Column<Object,Boolean> selectedCol = new Column<Object, Boolean>(selectedCell){
@Override
public Boolean getValue(Object object) {
return object.isSelected();
}
};
table.addColumn(selectedCol);
//Single Click Event to Enable/Disable checkbox.
table.addDomHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Set<Object> selectedItems = selectionModel.getSelectedSet();
for (Object s : selectedItems) {
Window.alert(String.valueOf(s));
selectionModel.setSelected(s, true);
}
}
}, ClickEvent.getType());
MultiSelectionModel selectionModel=新建MultiSelectionModel();
表.setSelectionModel(selectionModel);
CheckboxCell selectedCell=新建CheckboxCell();
Column selectedCol=新列(selectedCell){
@凌驾
公共布尔getValue(对象){
返回object.isSelected();
}
};
table.addColumn(selectedCol);
//单击事件以启用/禁用复选框。
table.addDomHandler(新的ClickHandler(){
@凌驾
公共作废一次点击(点击事件){
Set selectedItems=selectionModel.getSelectedSet();
对于(对象s:selectedItems){
Window.alert(String.valueOf);
selectionModel.setSelected(s,true);
}
}
},ClickEvent.getType());
我尝试使用“selectionModel.setSelected(s,true)”将一行标记为选中。但它不起作用,当我单击行时,相应的复选框没有被选中
我的问题是如何在单击整行时启用/禁用复选框。我的方法正确吗。或者在GWT中是否有其他方法执行此操作。您非常接近工作解决方案 在
selectedCell
中,您应该根据selectionModel
返回值:
return selectionModel.isSelected(object);
这样,您就可以使用默认的多选模型,通过单击行来选择行。复选框值来自选择模型。就这样
请参见下面的工作示例:
CellTable<String> table = new CellTable<String>();
final MultiSelectionModel<String> selectionModel = new MultiSelectionModel<>();
table.setSelectionModel(selectionModel);
CheckboxCell selectedCell = new CheckboxCell();
Column<String, Boolean> selectedCol = new Column<String, Boolean>(selectedCell) {
@Override
public Boolean getValue(String object) {
// return object.isSelected();
return selectionModel.isSelected(object);
}
};
table.addColumn(selectedCol);
table.addColumn(new TextColumn<String>() {
@Override
public String getValue(String object) {
return object;
}
});
List<String> values = new ArrayList<>();
for(int i = 0; i < 10; i++)
values.add("Line " + (i + 1));
table.setRowData(values);
CellTable table=新的CellTable();
最终MultiSelectionModel selectionModel=新的MultiSelectionModel();
表.setSelectionModel(selectionModel);
CheckboxCell selectedCell=新建CheckboxCell();
Column selectedCol=新列(selectedCell){
@凌驾
公共布尔getValue(字符串对象){
//返回object.isSelected();
返回selectionModel.isSelected(对象);
}
};
table.addColumn(selectedCol);
table.addColumn(新的TextColumn(){
@凌驾
公共字符串getValue(字符串对象){
返回对象;
}
});
列表值=新的ArrayList();
对于(int i=0;i<10;i++)
添加(“行”+(i+1));
表.setRowData(值);
可以使用标准的Ctrl键和Shift键控制选择
或者至少给你另一个接近的角度。