8

我正在使用带有复选框的表格查看器,如下所示:

final TableViewer legendViewer = new TableViewer(parent, SWT.CHECK);

在此查看器中收听复选框选择/取消选择的解决方案是什么?

提前致谢, 马努

4

3 回答 3

13

看看CheckboxTableViewer派生的类,TableViewer它简化了带有SWT.CHECK样式的 TableViewer 的使用。

ICheckStateListener向您的CheckboxTableViewervia添加一个实现addCheckStateListener()。您必须实施的唯一方法是checkStateChanged(CheckStateChangedEvent event)包含event有关状态更改的所有必要信息。

如果您只需要一列,您可以像这样创建 CheckboxTableViewer:

CheckboxTableViewer myTableViewer = CheckboxTableViewer.newCheckList(parent, style);
于 2011-07-01T07:20:56.547 回答
9

您监听SWT.Selection事件Table并检查event.detail == SWT.CHECK...

有关实际代码,请参阅此示例....

于 2011-07-01T07:15:33.060 回答
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

于 2019-06-05T16:21:29.347 回答