1

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

这是我的隐藏代码:

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

3 回答 3

0

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

于 2012-08-27T14:08:23.207 回答
0

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

于 2012-08-25T21:14:38.350 回答
0

查看您的代码,您似乎试图通过调用来隐藏. 如果你处理一个小部件,它就永远消失了。你无法取回它。itemdispose()

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

于 2012-08-25T21:03:20.903 回答