2010-10-13 18 views
0

Est-il possible d'afficher un JGraphX ​​en l'ajoutant à un JLable? Une grande partie de testJGraphX ​​(ci-dessous) provient de l'exemple JGraphX ​​Hello World, mais le graphique n'est pas affiché dans jLable1. Existe-t-il un meilleur conteneur que JLabel pour un JGraphX?Comment afficher au mieux JGraphX?

public class TestJGraphX extends javax.swing.JFrame implements TableModelListener { 
    public TestJGraphX() { 
     initComponents(); 
     testJGraphX(); 
    } 
    private void initComponents() { 
     jLabel1 = new javax.swing.JLabel(); 
    ... 
    .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 304, Short.MAX_VALUE) 
    ... 
    .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 170, Short.MAX_VALUE)) 
    ... 
} 
    private void testJGraphX() { 
     mxGraph graph = new mxGraph(); 
     Object parent = graph.getDefaultParent(); 
     graph.getModel().beginUpdate(); 
     try { 
      Object v1 = graph.insertVertex(parent, null, "Hello", 20, 20, 80, 30); 
      Object v2 = graph.insertVertex(parent, null, "World!", 240, 150, 80, 30); 
      graph.insertEdge(parent, null, "Edge", v1, v2); 
     } finally { 
      graph.getModel().endUpdate(); 
     } 
     mxGraphComponent graphComponent = new mxGraphComponent(graph); 
     jLabel1.add(graphComponent); 
    } 
} 

Répondre

2

Un JPanel devrait fonctionner, ou même juste l'ajouter directement à un JFrame.

Édition - le code ci-dessous affiche le graphique très bien pour moi.

import javax.swing.JFrame; 

import com.mxgraph.swing.mxGraphComponent; 
import com.mxgraph.view.mxGraph; 

public class GraphFrame extends JFrame { 
    public static void main(String[] args) { 
     mxGraph graph = new mxGraph(); 
     Object parent = graph.getDefaultParent(); 
     graph.getModel().beginUpdate(); 
     try { 
      Object v1 = graph.insertVertex(parent, null, "Hello", 20, 20, 80, 
        30); 
      Object v2 = graph.insertVertex(parent, null, "World!", 240, 150, 
        80, 30); 
      graph.insertEdge(parent, null, "Edge", v1, v2); 
     } finally { 
      graph.getModel().endUpdate(); 
     } 
     mxGraphComponent graphComponent = new mxGraphComponent(graph); 

     GraphFrame frame = new GraphFrame(); 
     frame.add(graphComponent); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 
+0

J'ai remplacé le JLabel par un JPanel mais le graphique n'est toujours pas affiché. – jacknad

+0

Essayez de l'ajouter directement au JFrame, c'est-à-dire ajoutez (graphComponent); pack(); – William

+0

Remplacé jPanel1.add (graphComponent); avec add (graphComponent); pack(); ... Toujours pas de chance. – jacknad