[英]org.eclipse.swt.SWTException: Widget is disposed when removing multiple rows from table - SWT
I have Table
which has SWT.CHECK
style so I can remove checked items. 我有具有
SWT.CHECK
样式的Table
,因此可以删除选中的项目。 I add button and SelectionAdapter
to do the job: 我添加按钮和
SelectionAdapter
来完成这项工作:
Button btnRemove = new Button(this, SWT.PUSH);
btnRemove.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getItems(); /* get all items */
int i;
for (i = 0;i < items.length;i++)
if (items[i].getChecked()) /* look if it is selected */
table.remove(i);
}
});
When I remove single item, it is working fine, but when I check multiple items and then hit remove, I get SWTException: Widget is disposed
. 当我删除单个项目时,它工作正常,但是当我检查多个项目然后点击删除时,我得到了
SWTException: Widget is disposed
。 Here is the full stack trace: 这是完整的堆栈跟踪:
org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(SWT.java:4282)
at org.eclipse.swt.SWT.error(SWT.java:4197)
at org.eclipse.swt.SWT.error(SWT.java:4168)
at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340)
at org.eclipse.swt.widgets.TableItem.getChecked(TableItem.java:423)
at org.majid.swt.Main$1.widgetSelected(Main.java:132)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
at org.majid.swt.Main.main(Main.java:24)
TableItems[] getCheckedItems()
to retrieve only check items instead of checking whole items? TableItems[] getCheckedItems()
来仅检索检查项目而不是检查整个项目? Once you call table.remove(i);
一旦调用
table.remove(i);
the items in the table will be different (one less) than in your array and in the next iteration the i-th item in the table is not what you expect. 表中的项目将与数组中的项目不同(少一个),并且在下一次迭代中,表中的第i个项目不是您所期望的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.