- From: Frederic Raimbault <frederic.raimbault AT univ-ubs.fr>
- To: users AT graphstream-project.org
- Subject: interaction fatale entre un JTabbedPane et un View
- Date: Tue, 25 Feb 2014 16:49:56 +0100
Bonjour,
j'ai un plantage assez inexplicable (pour moi !) qui survient dans les
conditions suivantes :
Je créé une application Swing dans laquelle j'affiche dans un JPanel un
graphstream obtenu à partir un fichier DGS. Dans un autre JPanel je crée
un JTabbedPane pour afficher des informations sur les noeuds de ce
graphe (un JPanel dans le JTabbedPane par noeud). J'ai par ailleurs un
JSlider dans un autre JPanel qui me permet de moduler la vitesse
d'affichage du graphe.
Cette application fonctionnait très bien tant que je n'avais pas de
JTabbedPane. Elle fonctionne toujours avec le JTabbedPane si je ne
clique pas sur le JTabbedPane pendant l'affichage du graphe. Elle
fonctionne encore si j'attend la fin du thread qui affiche le graphe
avant de cliquer sur le JTabbedPane.
Cette application plante :
- si j'ajoute dynamiquement des JPanel au JTabbedPane, par exemple au
fur et à mesure où les noeuds sont crées,
- ou alors si je clique simplement sur le JTabbedPane pendant
l'affichage du graphe.
Voici la pile d'exception que j'obtiens dans les deux cas :
-----------------------------------------------------------------------------------
Exception in thread "AWT-EventQueue-0"
java.lang.IllegalArgumentException: negative width
at java.awt.BasicStroke.<init>(BasicStroke.java:192)
at java.awt.BasicStroke.<init>(BasicStroke.java:276)
at
org.graphstream.ui.j2dviewer.renderer.shape.swing.ShapeStroke$PlainShapeStroke.stroke(ShapeStrok
e.scala:85)
at
org.graphstream.ui.j2dviewer.renderer.shape.swing.FillableLine$class.configureFillableLineForGro
up(ShapeParts.scala:161)
at
org.graphstream.ui.j2dviewer.renderer.shape.swing.LineShape.configureFillableLineForGroup(BaseSh
apes.scala:298)
at
org.graphstream.ui.j2dviewer.renderer.shape.swing.LineConnectorShape$class.configureForGroup(Bas
eShapes.scala:121)
at
org.graphstream.ui.j2dviewer.renderer.shape.swing.LineShape.configureForGroup(BaseShapes.scala:2
98)
at
org.graphstream.ui.j2dviewer.renderer.EdgeRenderer.pushStyle(EdgeRenderer.scala:51)
at
org.graphstream.ui.j2dviewer.renderer.StyleRenderer.render(StyleRenderer.scala:94)
at
org.graphstream.ui.j2dviewer.renderer.StyleRenderer.render(StyleRenderer.scala:73)
at
org.graphstream.ui.j2dviewer.J2DGraphRenderer$$anonfun$render$2$$anonfun$apply$1.apply(J2DGraphR
enderer.scala:223)
at
org.graphstream.ui.j2dviewer.J2DGraphRenderer$$anonfun$render$2$$anonfun$apply$1.apply(J2DGraphR
enderer.scala:221)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at
org.graphstream.ui.j2dviewer.J2DGraphRenderer$$anonfun$render$2.apply(J2DGraphRenderer.scala:221
)
at
org.graphstream.ui.j2dviewer.J2DGraphRenderer$$anonfun$render$2.apply(J2DGraphRenderer.scala:220
)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at
org.graphstream.ui.j2dviewer.J2DGraphRenderer.render(J2DGraphRenderer.scala:220)
at
org.graphstream.ui.swingViewer.DefaultView.render(DefaultView.java:237)
at
org.graphstream.ui.swingViewer.DefaultView.paintComponent(DefaultView.java:172)
at javax.swing.JComponent.paint(JComponent.java:1045)
at javax.swing.JComponent.paintChildren(JComponent.java:878)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5212)
at
javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1236)
at javax.swing.JComponent._paintImmediately(JComponent.java:5160)
at javax.swing.JComponent.paintImmediately(JComponent.java:4971)
at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
at javax.swing.RepaintManager$3.run(RepaintManager.java:784)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784)
at
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757)
at
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
at javax.swing.RepaintManager.access$1000(RepaintManager.java:62)
at
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1647)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
----------------------------------------------------------------------------------
J'utilise gs-1.2, sous linux. Le plantage survient avec ou sans l'option
"-Dsun.java2d.opengl=True". Et je fais un
System.setProperty("org.graphstream.ui.renderer",
"org.graphstream.ui.j2dviewer.J2DGraphRenderer"); au démarrage du main()
Est ce que mon explication est assez claire ?
Avez vous besoin de mes sources ?
Très cordialement
--
Frédéric Raimbault
Enseignant-chercheur en informatique
Université de Bretagne Sud - Laboratoire IRISA
- interaction fatale entre un JTabbedPane et un View, Frederic Raimbault, 25/02/2014
Archives gérées par MHonArc 2.6.16.