我正在尝试允许我的用户搜索信息表,动态隐藏/显示包含搜索的结果。我有隐藏部分,它运行良好,但一旦搜索条件发生变化,我就无法再次显示表项目。
这是我的隐藏代码:
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
}
}
});
答案 0 :(得分:0)
查看您的代码,您似乎尝试通过调用item
隐藏 dispose()
。如果你处理一个小部件,它就会消失。你无法取回它。
如果您想再次取消隐藏,则必须在之前隐藏的具有相同内容的位置创建新项目。
答案 1 :(得分:0)
使用某种表模型和JFace绑定实际操作不是更好吗,而是这样做吗?是的,处置不是隐藏的。您应该从表中删除该项目。
答案 2 :(得分:0)
在致电TableItem
之前,您可能需要将数据从dispose
保存到收藏中。然后当您再次搜索时,您可以检查该集合以及是否找到匹配项,然后通过创建新的Table
插回TableItem
。