如何隐藏swt tableitem?

umuewwlo  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(272)

我试图允许我的用户搜索一个信息表,动态隐藏/显示包含搜索的结果。我有隐藏部分下来,它工作得很好,但我有麻烦再次显示表项,一旦搜索条件被改变。
这是我的隐藏代码:

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
                }
            }
        });
xxb16uws

xxb16uws1#

看看你的代码,你似乎试图隐藏 item 通过呼叫 dispose() . 如果你处理了一个小部件,它就永远消失了。你拿不回来。
如果您想再次取消隐藏它,则必须在先前隐藏的具有相同内容的项目的位置创建一个新项目。

kognpnkq

kognpnkq2#

你可能得把数据从 TableItem 在你打电话之前 dispose . 然后,当您再次搜索时,您可以检查该集合,如果找到匹配项,则将其插入 Table 通过创建新的 TableItem .

kcwpcxri

kcwpcxri3#

使用某种表模型和jface绑定进行实际操作不是更好吗?是的,处置不是隐藏。您可能应该从表中删除该项。

相关问题