Java Windows XP上的jface/swt树刷新问题
我有一个基于SWT的桌面应用程序。我有一棵树,它包含在一个ScrolledComposite中。应用程序中的这段代码应该用于刷新ui组件Java Windows XP上的jface/swt树刷新问题,java,swt,jface,Java,Swt,Jface,我有一个基于SWT的桌面应用程序。我有一棵树,它包含在一个ScrolledComposite中。应用程序中的这段代码应该用于刷新ui组件 aTreeViewer.setInput(this.items) //items is an array list of relevant objects 但它在WindowsXP和Windows7上的表现很奇怪。在Win XP中,它返回一个影响应用程序行为的hard ArrayIndexOutofBounds异常 java.lang.ArrayIndexO
aTreeViewer.setInput(this.items) //items is an array list of relevant objects
但它在WindowsXP和Windows7上的表现很奇怪。在Win XP中,它返回一个影响应用程序行为的hard ArrayIndexOutofBounds异常
java.lang.ArrayIndexOutOfBoundsException: 46
at org.eclipse.swt.widgets.Tree._getItem(Tree.java:254)
at org.eclipse.swt.widgets.Tree._getItem(Tree.java:248)
at org.eclipse.swt.widgets.Tree.findCell(Tree.java:2703)
at org.eclipse.swt.widgets.Tree.WM_MOUSEMOVE(Tree.java:6806)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4575)
at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4989)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2546)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3756)
而在Win7上,它似乎是从SWT层返回的消息,该消息似乎是在eclipse控制台上打印的RunTimeException,但不会影响应用程序的行为。也就是说,应用程序运行良好
Ignored reentrant call while viewer is busy. This is only logged once per viewer instance, but similar calls will still be ignored.
java.lang.RuntimeException
at org.eclipse.jface.viewers.ColumnViewer.checkBusy(ColumnViewer.java:763)
at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:541)
at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1490)
at com.sxsy.smtj.ui.cw.widgets.EwList.basicRefresh(EwList.java:86)
at com.sxsy.smtj.ui.cw.widgets.EwTableList.basicRefresh(EwTableList.java:75)
at com.sxsy.smtj.ui.cw.widgets.EwList.refresh(EwList.java:402)
at com.sxsy.smtj.ui.cw.widgets.EwTableList.columnsChanged(EwTableList.java:115)
at com.sxsy.smtj.ui.cw.widgets.EwTableColumn.updateWidget(EwTableColumn.java:377)
at com.sxsy.smtj.ui.cw.widgets.EwTableColumn.width(EwTableColumn.java:407)
at com.sxsy.smtj.ui.cw.widgets.WkTableWidget.doAutoSizeColumns(WkTableWidget.java:244)
at com.sxsy.smtj.ui.cw.widgets.WkTableWidget.autoSizeColumns(WkTableWidget.java:87)
at com.sxsy.smtj.ui.cw.widgets.WkTableWidget.processResizedEvent(WkTableWidget.java:437)
at com.sxsy.smtj.ui.cw.widgets.EwList$3.controlResized(EwList.java:449)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:235)
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.Widget.sendEvent(Widget.java:1077)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5795)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2541)
at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1442)
at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5859)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
at org.eclipse.swt.internal.win32.OS.SetScrollInfo(Native Method)
at org.eclipse.swt.widgets.Tree.updateScrollBar(Tree.java:5660)
at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1589)
at org.eclipse.swt.widgets.Scrollable.WM_SIZE(Scrollable.java:316)
at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1662)
at org.eclipse.swt.widgets.Tree.WM_SIZE(Tree.java:7137)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4603)
at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)
at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1534)
at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:5408)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4616)
at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
at org.eclipse.swt.internal.win32.OS.ShowScrollBar(Native Method)
at org.eclipse.swt.widgets.Tree.WM_SIZE(Tree.java:7124)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4603)
at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)
at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1534)
at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:5408)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4616)
at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)
at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1534)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4623)
at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
at org.eclipse.swt.internal.win32.OS.SendMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:3385)
at org.eclipse.swt.widgets.Tree.createItem(Tree.java:2104)
at org.eclipse.swt.widgets.TreeItem.<init>(TreeItem.java:203)
at org.eclipse.swt.widgets.TreeItem.<init>(TreeItem.java:91)
at org.eclipse.jface.viewers.TreeViewer.createNewRowPart(TreeViewer.java:809)
at org.eclipse.jface.viewers.TreeViewer.newItem(TreeViewer.java:315)
at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:847)
at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:823)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:797)
at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:644)
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:768)
at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1548)
at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:833)
at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1532)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1443)
at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:403)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1404)
at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1525)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:280)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1690)
at com.sxsy.smtj.ui.cw.widgets.EwList.refreshItems(EwList.java:439)
at com.sxsy.smtj.ui.cw.widgets.EwTableList.refreshItems(EwTableList.java:514)
at com.sxsy.smtj.ui.cw.widgets.EwTableTree.refreshItems(EwTableTree.java:275)
at com.sxsy.smtj.ui.cw.widgets.EwList.itemsHaveChanged(EwList.java:345)
at com.sxsy.smtj.ui.cw.widgets.EwLinearList.itemsHaveChanged(EwLinearList.java:200)
at com.sxsy.smtj.ui.cw.widgets.EwList.setItems(EwList.java:549)
at com.sxsy.smtj.ui.cw.widgets.WkTableWidget.setItems(WkTableWidget.java:467)
at com.sxsy.smtj.ui.abt.widgets.compatibility.ExtendedList.widgetSetItems(ExtendedList.java:574)
at com.sxsy.smtj.ui.abt.widgets.compatibility.ExtendedList.setItems(ExtendedList.java:479)
at com.sxsy.smtj.ui.wk.table.compatibility.WkTableWidgetView.setItems(WkTableWidgetView.java:645)
at com.misys.liq.ui.collateral.LiqCollateralAgreementTypeDefinitionController.updateAttributeGrid(LiqCollateralAgreementTypeDefinitionController.java:1712)
at com.misys.liq.ui.collateral.LiqCollateralAgreementTypeDefinitionController.showCoreAttributes(LiqCollateralAgreementTypeDefinitionController.java:1730)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sxsy.smtj.utilities.ReflectionUtility.invoke(ReflectionUtility.java:754)
at com.sxsy.smtj.utilities.ReflectionUtility.directPerform(ReflectionUtility.java:740)
at com.sxsy.smtj.utilities.ReflectionUtility.perform(ReflectionUtility.java:605)
at com.sxsy.smtj.compatibility.va.kernel.core.DirectedMessage.performAction(DirectedMessage.java:106)
at com.misys.liq.infrastructure.EventObservableSupport.signalEvent(EventObservableSupport.java:21)
at com.sxsy.smtj.ui.abt.ObservableObject.primSignalEvent(ObservableObject.java:324)
at com.sxsy.smtj.ui.abt.ObservableObject.signalEvent(ObservableObject.java:398)
at com.sxsy.smtj.ui.abt.widgets.compatibility.BasicView.signalEvent(BasicView.java:1879)
at com.sxsy.smtj.ui.abt.widgets.compatibility.ToggleButtonView$2.widgetSelected(ToggleButtonView.java:316)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
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:4169)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
at com.misys.liq.LoanIQ$13.value(LoanIQ.java:676)
at com.sxsy.smtj.exceptions.ExceptionUtility.whenDo(ExceptionUtility.java:99)
at com.misys.liq.LoanIQ.standardLiqEventLoop(LoanIQ.java:693)
at com.misys.liq.LoanIQ.desktopTestManualLogIn(LoanIQ.java:924)
at com.misys.liq.LoanIQ.mainClassic(LoanIQ.java:589)
at com.misys.liq.LoanIQ.main(LoanIQ.java:309)
在查看器忙时忽略可重入调用。每个查看器实例只记录一次,但类似的调用仍将被忽略。
java.lang.RuntimeException
位于org.eclipse.jface.viewers.ColumnViewer.checkBusy(ColumnViewer.java:763)
在org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:541)上
位于org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1490)
位于com.sxsy.smtj.ui.cw.widgets.EwList.basicRefresh(EwList.java:86)
位于com.sxsy.smtj.ui.cw.widgets.EwTableList.basicRefresh(EwTableList.java:75)
位于com.sxsy.smtj.ui.cw.widgets.EwList.refresh(EwList.java:402)
在com.sxsy.smtj.ui.cw.widgets.EwTableList.columnshanged(EwTableList.java:115)上
位于com.sxsy.smtj.ui.cw.widgets.EwTableColumn.updateWidget(EwTableColumn.java:377)
位于com.sxsy.smtj.ui.cw.widgets.EwTableColumn.width(EwTableColumn.java:407)
位于com.sxsy.smtj.ui.cw.widgets.WkTableWidget.doAutoSizeColumns(WkTableWidget.java:244)
位于com.sxsy.smtj.ui.cw.widgets.WkTableWidget.autoSizeColumns(WkTableWidget.java:87)
在com.sxsy.smtj.ui.cw.widgets.WkTableWidget.processResizedEvent(WkTableWidget.java:437)上
位于com.sxsy.smtj.ui.cw.widgets.EwList$3.controlResized(EwList.java:449)
位于org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:235)
位于org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
位于org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
位于org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
位于org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
位于org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5795)
位于org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
位于org.eclipse.swt.internal.win32.OS.DefWindowProcW(本机方法)
位于org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2541)
位于org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1442)
位于org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5859)
位于org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
位于org.eclipse.swt.internal.win32.OS.SetScrolInfo(本机方法)
位于org.eclipse.swt.widgets.Tree.updateScrollBar(Tree.java:5660)
位于org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1589)
位于org.eclipse.swt.widgets.Scrollable.WM_SIZE(Scrollable.java:316)
位于org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1662)
位于org.eclipse.swt.widgets.Tree.WM_SIZE(Tree.java:7137)
位于org.eclipse.swt.widgets.Control.windowProc(Control.java:4603)
位于org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
位于org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
位于org.eclipse.swt.internal.win32.OS.CallWindowProcW(本机方法)
位于org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)
位于org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1534)
位于org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:5408)
位于org.eclipse.swt.widgets.Control.windowProc(Control.java:4616)
位于org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
位于org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
位于org.eclipse.swt.internal.win32.OS.showcollbar(本机方法)
位于org.eclipse.swt.widgets.Tree.WM_SIZE(Tree.java:7124)
位于org.eclipse.swt.widgets.Control.windowProc(Control.java:4603)
位于org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
位于org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
位于org.eclipse.swt.internal.win32.OS.CallWindowProcW(本机方法)
位于org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)
位于org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1534)
位于org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:5408)
位于org.eclipse.swt.widgets.Control.windowProc(Control.java:4616)
位于org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
位于org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
位于org.eclipse.swt.internal.win32.OS.CallWindowProcW(本机方法)
位于org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)
位于org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1534)
位于org.eclipse.swt.widgets.Control.windowProc(Control.java:4623)
位于org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
位于org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
位于org.eclipse.swt.internal.win32.OS.SendMessageW(本机方法)
位于org.eclipse.swt.internal.win32.OS.sendmages(OS.java:3385)
位于org.eclipse.swt.widgets.Tree.createItem(Tree.java:2104)
位于org.eclipse.swt.widgets.TreeItem(TreeItem.java:203)
位于org.eclipse.swt.widgets.TreeItem.(TreeItem.java:91)
位于org.eclipse.jface.viewers.TreeViewer.createNewRowPart(TreeViewer.java:809)
位于org.eclipse.jface.viewers.TreeViewer.newItem(TreeViewer.java:315)
位于org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:847)
位于org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:823)
位于org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
在org.eclipse.jface.viewers.Ab
aTreeViewer.setInput(null);
aTreeViewer.setInput(this.items);