如何在 SWT 中隐藏/显示 TableItem?

问题描述 投票:0回答:3

我试图允许我的用户搜索信息表,动态隐藏/显示包含搜索的结果。我已经隐藏了部分,并且效果很好,但是一旦更改搜索条件,我就无法再次显示表格项目。

这是我的隐藏代码:

searchField.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(ModifyEvent arg0) {
                modified = true;
                for (int i = 0; i < table.getItems().length; i++) {
                    if (!(table.getItem(i).getText(2)
                            .contains(searchField.getText()))) {
                        table.getItem(i).dispose();
                    }

                }
                if ("".equals(searchField.getText())) {
                    modified = false;
                                    //where I would want to un-hide items
                }
            }
        });
java events swt
3个回答
0
投票

查看您的代码,似乎您试图通过调用 item

隐藏
dispose()
。如果你丢弃一个小部件,它就会永远消失。你无法收回它。

如果您想再次取消隐藏它,则必须在之前隐藏的项目的位置创建一个具有相同内容的新项目。


0
投票

实际使用某种表模型和 JFace 绑定进行操作不是更好吗?然后这样做?是的,处置并不意味着隐藏。您可能应该从桌子上删除该项目。


0
投票

在调用

TableItem
之前,您可能必须将
dispose
中的数据保存到集合中。然后,当您再次搜索时,您可以检查该集合,如果找到匹配项,则通过创建新的
Table
插入回
TableItem

© www.soinside.com 2019 - 2024. All rights reserved.