Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选中/取消选中CheckboxCell,单击一行-GWT_Java_Checkbox_Gwt_Onclick_Gwt Celltable - Fatal编程技术网

Java 选中/取消选中CheckboxCell,单击一行-GWT

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

我有一个单元格表,第一列是复选框。当整行出现任何单击事件时,必须选中或取消选中我的复选框。以下代码用于创建多选模型、创建CheckboxCell以及为单元格表创建列

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键控制选择

或者至少给你另一个接近的角度。