代码之家  ›  专栏  ›  技术社区  ›  jacknad

如何最好地显示JGraphX?

  •  0
  • jacknad  · 技术社区  · 15 年前

    可以通过将JGraphX添加到JLable中来显示它吗? testJGraphX的大部分内容(如下)取自JGraphX Hello World示例,但jlabel1中不显示该图。 有没有比JLabel更适合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);
        }
    }
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   William    15 年前

    JPanel应该可以工作,或者直接添加到JFrame中。

    编辑

    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);
        }
    }