如何在JFace表查看器中侦听复选框

时间:2011-07-01 06:57:28

标签: java eclipse jface viewer

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

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

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

提前致谢, 马努

3 个答案:

答案 0 :(得分:12)

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

通过ICheckStateListenerCheckboxTableViewer添加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