我正在使用带有复选框的表格查看器,如下所示:
final TableViewer legendViewer = new TableViewer(parent, SWT.CHECK);
在此查看器中收听复选框选择/取消选择的解决方案是什么?
提前致谢, 马努
答案 0 :(得分:12)
查看从CheckboxTableViewer
派生的类TableViewer
,它简化了使用SWT.CHECK
样式的TableViewer的使用。
通过ICheckStateListener
向CheckboxTableViewer
添加addCheckStateListener()
的实施。您必须实现的唯一方法是checkStateChanged(CheckStateChangedEvent event)
,其中event
包含有关状态更改的所有必要信息。
如果只需要一列,可以像这样创建一个CheckboxTableViewer:
CheckboxTableViewer myTableViewer = CheckboxTableViewer.newCheckList(parent, style);
答案 1 :(得分:8)
您在SWT.Selection
上收听Table
个事件并检查event.detail == SWT.CHECK
...
请参阅此example了解实际代码....
答案 2 :(得分:0)
扩展@Tonny的答案,这是您将使用的监听器:
tableViewer.getTable().addListener(SWT.Selection, (e) -> {
if (e.detail == SWT.CHECK) {
MyModel modelObj = (MyModel) e.item.getData();
TableItem item = (TableItem) e.item;
System.out.println("ITEM CHECKED -> " + item.getChecked());
}
});
您会看到,可以将窗口小部件投射到TableItem
上,以了解用户是否选中了该复选框。
不过,就像@Claimos'所说的那样,我只使用JFace CheckboxTableViewer
。