【发布时间】:2011-09-26 13:01:27
【问题描述】:
我正在使用带有以下复选框的表格查看器:
final TableViewer legendViewer = new TableViewer(parent, SWT.CHECK);
在此查看器中收听复选框选择/取消选择的解决方案是什么?
提前致谢, 手动
【问题讨论】:
我正在使用带有以下复选框的表格查看器:
final TableViewer legendViewer = new TableViewer(parent, SWT.CHECK);
在此查看器中收听复选框选择/取消选择的解决方案是什么?
提前致谢, 手动
【问题讨论】:
查看派生自TableViewer 的类CheckboxTableViewer,它简化了SWT.CHECK 样式的TableViewer 的使用。
通过addCheckStateListener() 将ICheckStateListener 的实现添加到您的CheckboxTableViewer。您必须实现的唯一方法是checkStateChanged(CheckStateChangedEvent event),其中event 包含有关状态更改的所有必要信息。
如果您只需要一列,您可以像这样创建 CheckboxTableViewer:
CheckboxTableViewer myTableViewer = CheckboxTableViewer.newCheckList(parent, style);
【讨论】:
您在Table 上侦听SWT.Selection 事件并检查event.detail == SWT.CHECK...
查看example 获取实际代码....
【讨论】:
扩展@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。
【讨论】: