Hi Leute,
ich habe ein Programm übertragen bekommen bei dem SWT & JFreeChart mehr oder weniger gut eingesetzt wurden. Selber hatte ich nur mit dem AWT und Swing zu tun, mit SWT und JFreeChart noch gar nicht. Jedenfalls läuft die Software inzwischen schon deutlich stabiler als vorher, aber ein paar Sachen bleiben hartnäckig vorhanden:
a) Anzeigefehler bei erweitertem Desktop:
Wenn man die GUI von dem "primären" Monitor auf den "erweiterten" Monitor verschiebt, treten bei einer ScrolledComposite (die mehrere Charts enthält) Anzeigefehler in der Form vor, das alle Charts nach dem hoch- oder runterscrollen den selben Chart anzeigen (also auch Beschriftung usw., praktisch 1 Chart wird x-mal angezeigt anstatt x verschiedener Charts). Auf dem "primären" Monitor ist das nicht zu beobachten.
Ist das nun ein SWT-Problem irgendwie im Zusammenhang mit "Display"? Oder eher bei JFreeChart zu suchen?
b) Regelmässige aber nicht immer auftretende ConcurrentModificationException's alternativ auch mal NullPointerException's beim Einlesen von Dateien und darauf folgenden Chart-Aktualisierungen:
Dahinter vermute ich ja irgendwie diese UI-Thread Sache von SWT, auf die ich bei der Suche bisher stieß. Vor allem da
c) die Software auch "Invalid Thread Access Exceptions" hatte. Die habe ich zwar rausbekommen, aber erstmal auch nur durch bloßes auskommentieren der Statements ( ), da die eigentlich völlig überflüssig waren. So etwas wie asyncExec() oder syncExec() war also erstmal nicht nötig.
Irgendwelche Anregungen oder Such-Stichwörter? Bei der inzwischen schon längeren Internetrecherche kommt irgendwie nichts bei rum, was wirklich weiterhilft. Aber vermutlich suche ich auch einfach nach dem Falschen.
Hat btw. einer einen guten Link wo das UI-Thread-Konzept von SWT ausführlicher erklärt wird. Die Suchergebnisse liefern i.d.R. nur SWT-Einführungen bei denen Elemente und Aufbau einer GUI beschrieben sind. Und bei JFreeChart gibts kaum was im Netz, aber dafür dieses eine Buch da, richtig?
Gruß,
crkn
ich habe ein Programm übertragen bekommen bei dem SWT & JFreeChart mehr oder weniger gut eingesetzt wurden. Selber hatte ich nur mit dem AWT und Swing zu tun, mit SWT und JFreeChart noch gar nicht. Jedenfalls läuft die Software inzwischen schon deutlich stabiler als vorher, aber ein paar Sachen bleiben hartnäckig vorhanden:
a) Anzeigefehler bei erweitertem Desktop:
Wenn man die GUI von dem "primären" Monitor auf den "erweiterten" Monitor verschiebt, treten bei einer ScrolledComposite (die mehrere Charts enthält) Anzeigefehler in der Form vor, das alle Charts nach dem hoch- oder runterscrollen den selben Chart anzeigen (also auch Beschriftung usw., praktisch 1 Chart wird x-mal angezeigt anstatt x verschiedener Charts). Auf dem "primären" Monitor ist das nicht zu beobachten.
Ist das nun ein SWT-Problem irgendwie im Zusammenhang mit "Display"? Oder eher bei JFreeChart zu suchen?
b) Regelmässige aber nicht immer auftretende ConcurrentModificationException's alternativ auch mal NullPointerException's beim Einlesen von Dateien und darauf folgenden Chart-Aktualisierungen:
Code:
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at java.util.Collections$UnmodifiableCollection$1.next(Unknown Source)
at org.jfree.chart.plot.XYPlot.drawDomainMarkers(XYPlot.java:4015)
at org.jfree.chart.plot.XYPlot.draw(XYPlot.java:3378)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:1235)
at org.jfree.chart.ChartPanel.paintComponent(ChartPanel.java:1668)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Dahinter vermute ich ja irgendwie diese UI-Thread Sache von SWT, auf die ich bei der Suche bisher stieß. Vor allem da
c) die Software auch "Invalid Thread Access Exceptions" hatte. Die habe ich zwar rausbekommen, aber erstmal auch nur durch bloßes auskommentieren der Statements ( ), da die eigentlich völlig überflüssig waren. So etwas wie asyncExec() oder syncExec() war also erstmal nicht nötig.
Irgendwelche Anregungen oder Such-Stichwörter? Bei der inzwischen schon längeren Internetrecherche kommt irgendwie nichts bei rum, was wirklich weiterhilft. Aber vermutlich suche ich auch einfach nach dem Falschen.
Hat btw. einer einen guten Link wo das UI-Thread-Konzept von SWT ausführlicher erklärt wird. Die Suchergebnisse liefern i.d.R. nur SWT-Einführungen bei denen Elemente und Aufbau einer GUI beschrieben sind. Und bei JFreeChart gibts kaum was im Netz, aber dafür dieses eine Buch da, richtig?
Gruß,
crkn