如何监听 JFace Table Viewer 中的复选框

发布于 2024-11-17 22:13:33 字数 176 浏览 4 评论 0原文

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

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

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

提前致谢, 马努

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦回梦里 2024-11-24 22:13:33

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

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

如果您只需要一列,您可以创建一个 CheckboxTableViewer,如下所示:

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

Take a look at class CheckboxTableViewer derived from TableViewer which simplifies the use of a TableViewer with the SWT.CHECK style.

Add an implementaion of ICheckStateListener to your CheckboxTableViewer via addCheckStateListener(). The only method you have to implement is checkStateChanged(CheckStateChangedEvent event) where event contains all necessary information about the state change.

If you need only one column you can create a CheckboxTableViewer like this:

CheckboxTableViewer myTableViewer = CheckboxTableViewer.newCheckList(parent, style);
青柠芒果 2024-11-24 22:13:33

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

请参阅此 示例...

You listen for SWT.Selection events on the Table and check for event.detail == SWT.CHECK...

See this example for actual code....

挽梦忆笙歌 2024-11-24 22:13:33

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

Expanding @Tonny's answer, here's the listener you would use:

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.


Still, as @Claimos' says, I would just use a JFace CheckboxTableViewer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文