2013-11-23 2 views
1

위쪽이 JGraph의 JPanel이고 아래가 그래프에 나타날 노드의 수를 선택할 수있는 바의 JPanel 인 JFrame을 만들려고합니다. 그리고이 후에 업데이트 할 그래프. 이런 이유로 그래프를 별도의 클래스에 넣고 나중에 나는 업데이트 메소드를 빌드 할 것입니다.JPanel을 사용하여 JGraph를 만들고 싶습니다.

제 문제는 그래프가 포함 된 Panel은 프레임 크기이지만 그래프는 최대 정점 값만큼 커야한다는 것입니다. JPanel을 특정 크기로 변경하고 그래프가이 공간을 채우게하려면 어떻게해야합니까?

또한이 목표를 달성하는 가장 좋은 방법은 무엇입니까? 아니면 더 좋은 방법이 있습니까?

public class MyGraph extends JFrame{ 

private static final long serialVersionUID = 1L; 
private JPanel Gpanel; 

public MyGraph(){ 
    super("Graph"); 
    JPanel Gpanel = new NewPanel(); 
    getContentPane().add(Gpanel); 
} 



public static void main(String args[]){ 
    MyGraph frame = new MyGraph(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(600, 600); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 

class NewPanel extends JPanel{ 
    private static final long serialVersionUID = 1L; 
    mxGraph graph; 
    Object parent; 

    NewPanel(){ 
     this.graph = new mxGraph(); 
     this.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!", 300, 150, 80, 30); 
      graph.insertEdge(parent, null, "Edge", v1, v2); 
     } 
     finally{ 
      graph.getModel().endUpdate(); 
     } 
     mxGraphComponent graphComponent = new mxGraphComponent(graph); 
     this.add(graphComponent); 
    } 

    public void Update(){ 

    } 
} 

}

답변

1

항상 패널에 레이아웃을 설정

public MyGraph(){ 
    ... 
    getContentPane().setLayout(new BorderLayout()); 
    getContentPane().add(Gpanel, BorderLayout.CENTER); 
} 

class NewPanel extends JPanel{ 
    ... 

    NewPanel(){ 
     ... 
     this.setLayout(new BorderLayout()); 
     this.add(graphComponent, BorderLayout.CENTER); 
    } 
}