0
Table
はSWT.CHECK
のスタイルですので、チェック項目を削除できます。私はSWTException: Widget is disposed
を取得し、私は単一の項目を削除する場合org.eclipse.swt.SWTException:テーブルから複数の行を削除するときにウィジェットが配置されます
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);
}
});
は、それが正常に動作しているが、私は複数の項目をチェックし、削除打ったとき:私は仕事をするためのボタンとSelectionAdapter
を追加します。ここでは、完全なスタックトレースは次のとおりです。
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()
のような方法でアイテム全体をチェックするのではなく、チェックアイテムのみを検索する方法はありますか?あなたがtable.remove(i);
を呼び出したら