【问题标题】:How listen for check box in JFace Table Viewer如何在 JFace 表查看器中侦听复选框
【发布时间】:2011-09-26 13:01:27
【问题描述】:

我正在使用带有以下复选框的表格查看器:

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

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

提前致谢, 手动

【问题讨论】:

    标签: java eclipse jface viewer


    【解决方案1】:

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

    通过addCheckStateListener()ICheckStateListener 的实现添加到您的CheckboxTableViewer。您必须实现的唯一方法是checkStateChanged(CheckStateChangedEvent event),其中event 包含有关状态更改的所有必要信息。

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

    CheckboxTableViewer myTableViewer = CheckboxTableViewer.newCheckList(parent, style);
    

    【讨论】:

      【解决方案2】:

      您在Table 上侦听SWT.Selection 事件并检查event.detail == SWT.CHECK...

      查看example 获取实际代码....

      【讨论】:

        【解决方案3】:

        扩展@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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-10
          • 2012-10-30
          • 1970-01-01
          • 2011-06-30
          • 2015-10-20
          • 1970-01-01
          • 2018-09-14
          • 1970-01-01
          相关资源
          最近更新 更多