为了账号安全,请及时绑定邮箱和手机立即绑定

无法从 swt 中的表中删除 tableitem

无法从 swt 中的表中删除 tableitem

largeQ 2021-10-28 14:25:39
当我从 left_group_table(List) 中选择 List5 时,应该从 middle_group_table(Contact) 中删除属于 List5 的所有项目。如果列表包含多个项目,则应删除联系人表中的所有项目。请在下面找到应用程序和代码片段的屏幕截图。提前致谢!public static ArrayList<String> allEmailsFortheSelectedList = new ArrayList<String>();HashMap<Integer, ArrayList<String>> allEmailsForALLSelectedList;tableCursor.addMouseListener(new MouseListener() {        @Override        public void mouseUp(MouseEvent arg0) {            final int selectionIndex = left_group_table.getSelectionIndex();            if(left_group_table.getItem(selectionIndex).getChecked()) {                int tempCount = 0;                left_group_table.getItem(selectionIndex).setChecked(false);                TableItem[] items = middle_group_table.getItems();                if(allEmailsForALLSelectedList.containsKey(selectionIndex)) {                    allEmailsForALLSelectedList.remove(selectionIndex);                }                Set<Entry<Integer, ArrayList<String>>>  set = allEmailsForALLSelectedList.entrySet();                Iterator<Entry<Integer, ArrayList<String>>> itr = set.iterator();                 while(itr.hasNext())                 {                     HashMap.Entry<Integer, ArrayList<String>> entry = itr.next();                     for(int i=0; i< entry.getValue().size(); i++) {                        new TableItem(middle_group_table, SWT.NONE);                        items[tempCount].setText(1, entry.getValue().get(i));                        tempCount++;                    }                }                tempCount = items.length;                middle_group_table.setRedraw(true);            } 
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您的表应该有 removeAll() 方法,您可以使用。


middle_group_table.removeAll();


编辑:要删除一行,您需要获取要删除的元素的正确索引,最简单的方法没有任何 LINQ 是这样的:


First get the right list you need:

List<String> itemsToRemove = ...getting the list5, from your code I don't understand how the list is holding.


Then you can just iterate in reverse way and remove.

for (int i = middle_group_table.getItemCount() - 1; i <= 0; i--)

{

    if (itemsToRemove.contains(items[i].getText()))

        middle_group_table.remove(i);

}


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 290 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信