如何(联合国)隐藏SWT TableItem?

时间:2012-08-25 20:55:25

标签: java events swt

我正在尝试允许我的用户搜索信息表,动态隐藏/显示包含搜索的结果。我有隐藏部分,它运行良好,但一旦搜索条件发生变化,我就无法再次显示表项目。

这是我的隐藏代码:

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

3 个答案:

答案 0 :(得分:0)

查看您的代码,您似乎尝试通过调用item 隐藏 dispose()。如果你处理一个小部件,它就会消失。你无法取回它。

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

答案 1 :(得分:0)

使用某种表模型和JFace绑定实际操作不是更好吗,而是这样做吗?是的,处置不是隐藏的。您应该从表中删除该项目。

答案 2 :(得分:0)

在致电TableItem之前,您可能需要将数据从dispose保存到收藏中。然后当您再次搜索时,您可以检查该集合以及是否找到匹配项,然后通过创建新的Table插回TableItem