简体   繁体   English

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

[英]How listen for check box in JFace Table Viewer

I am using a Table Viewer with check boxes as following:我正在使用带有复选框的表格查看器,如下所示:

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

What is THE solution to listen to check boxes selection/unselection in this viewer?在此查看器中收听复选框选择/取消选择的解决方案是什么?

Thanks in advance, Manu提前致谢, 马努

Take a look at class CheckboxTableViewer derived from TableViewer which simplifies the use of a TableViewer with the SWT.CHECK style.看看 class CheckboxTableViewer派生自TableViewer ,它简化了具有SWT.CHECK样式的 TableViewer 的使用。

Add an implementaion of ICheckStateListener to your CheckboxTableViewer via addCheckStateListener() .通过addCheckStateListener()ICheckStateListener的实现添加到CheckboxTableViewer The only method you have to implement is checkStateChanged(CheckStateChangedEvent event) where event contains all necessary information about the state change.您必须实现的唯一方法是checkStateChanged(CheckStateChangedEvent event) ,其中event包含有关 state 更改的所有必要信息。

If you need only one column you can create a CheckboxTableViewer like this:如果您只需要一列,您可以像这样创建 CheckboxTableViewer:

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

You listen for SWT.Selection events on the Table and check for event.detail == SWT.CHECK ...您在Table上侦听SWT.Selection事件并检查event.detail == SWT.CHECK ...

See this example for actual code....有关实际代码,请参阅此 示例....

Expanding @Tonny's answer, here's the listener you would use:扩展@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());
    }
});

You see, you can cast the widget to TableItem to understand whether the user has either checked or unchecked the checkbox.您会看到,您可以将小部件强制转换为TableItem以了解用户是否选中或取消选中该复选框。


Still, as @Claimos' says, I would just use a JFace CheckboxTableViewer .不过,正如@Claimos 所说,我只会使用 JFace CheckboxTableViewer

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM