SWT TreeCursor在dispose时抛出IllegalArgumentException。有解决办法吗?

SWT TreeCursor在dispose时抛出IllegalArgumentException。有解决办法吗?,tree,swt,dispose,illegalargumentexception,Tree,Swt,Dispose,Illegalargumentexception,我对SWT TreeCursor有问题。作为这个问题的示例,我将使用eclipse网站上针对TreeCursor提供的“精确”示例: 现在,此示例运行良好,但如果您甚至单击树中的任意位置,或使用箭头键,从而使光标出现在屏幕上,则在关闭程序时,将引发此堆栈跟踪的异常: Exception in thread "main" java.lang.IllegalArgumentException: Index out of bounds at org.eclipse.swt.SWT.error(Unk

我对SWT TreeCursor有问题。作为这个问题的示例,我将使用eclipse网站上针对TreeCursor提供的“精确”示例:

现在,此示例运行良好,但如果您甚至单击树中的任意位置,或使用箭头键,从而使光标出现在屏幕上,则在关闭程序时,将引发此堆栈跟踪的异常:

Exception in thread "main" java.lang.IllegalArgumentException: Index out of bounds
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.error(Unknown Source)
at org.eclipse.swt.widgets.Tree.getItem(Unknown Source)
at org.eclipse.swt.custom.TreeCursor$3.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.release(Unknown Source)
at org.eclipse.swt.widgets.TreeItem.release(Unknown Source)
at org.eclipse.swt.widgets.Tree.releaseChildren(Unknown Source)
at org.eclipse.swt.widgets.Widget.release(Unknown Source)
at org.eclipse.swt.widgets.Control.release(Unknown Source)
at org.eclipse.swt.widgets.Composite.releaseChildren(Unknown Source)
at org.eclipse.swt.widgets.Canvas.releaseChildren(Unknown Source)
at org.eclipse.swt.widgets.Decorations.releaseChildren(Unknown Source)
at org.eclipse.swt.widgets.Shell.releaseChildren(Unknown Source)
at org.eclipse.swt.widgets.Widget.release(Unknown Source)
at org.eclipse.swt.widgets.Control.release(Unknown Source)
at org.eclipse.swt.widgets.Widget.dispose(Unknown Source)
at org.eclipse.swt.widgets.Shell.closeWidget(Unknown Source)
at org.eclipse.swt.widgets.Shell.windowShouldClose(Unknown Source)
at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Widget.callSuper(Unknown Source)
at org.eclipse.swt.widgets.Widget.windowSendEvent(Unknown Source)
at org.eclipse.swt.widgets.Shell.windowSendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Display.applicationSendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.applicationProc(Unknown Source)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at Snippet2.main(Snippet2.java:162)
这与你的代码无关。现在据我所知,这是SWT库中的一个问题,在处理光标时发生。从堆栈跟踪中可以看出,树项似乎是在处理游标之前处理的,因此当游标尝试访问树项时,会发生异常。我目前正在使用一种变通方法,但我想看看是否有人知道如何处理这个问题。有什么想法吗


PS:我在Mac OS X上使用SWT 4.2。

你有报道过吗?我以为我在使用4.3,而我在使用旧版本。我更新到4.3,问题就消失了!!我将尝试用旧版本复制它。。。如果它发生了,我会报告它…是的,它发生在4.2,但不是在4.3!!!TreeCursor来自3.8!!真奇怪!!为什么还没有报道?我猜很少有人使用TreeCursor…你以前使用的解决方法是什么?我的目标是月球(4.4)/火星(4.5),这仍然是OSX上的一个问题。对我来说,它发生在向显示的EList添加对象时。哇,对不起,我真的不记得我当时在做什么!!