GraphStream Users

Archives de la liste Aide


interaction fatale entre un JTabbedPane et un View


Chronologique Discussions 
  • 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




Archives gérées par MHonArc 2.6.16.

Top of page