我试图允许我的用户搜索一个信息表,动态隐藏/显示包含搜索的结果。我有隐藏部分下来,它工作得很好,但我有麻烦再次显示表项,一旦搜索条件被改变。
这是我的隐藏代码:
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条答案
按热度按时间xxb16uws1#
看看你的代码,你似乎试图隐藏
item
通过呼叫dispose()
. 如果你处理了一个小部件,它就永远消失了。你拿不回来。如果您想再次取消隐藏它,则必须在先前隐藏的具有相同内容的项目的位置创建一个新项目。
kognpnkq2#
你可能得把数据从
TableItem
在你打电话之前dispose
. 然后,当您再次搜索时,您可以检查该集合,如果找到匹配项,则将其插入Table
通过创建新的TableItem
.kcwpcxri3#
使用某种表模型和jface绑定进行实际操作不是更好吗?是的,处置不是隐藏。您可能应该从表中删除该项。