2012-08-15 3 views
1

하나의 창에 여러 개의 jfreechart를 표시하려고합니다. 분명히 이것은 포함 된 ChartFrame에서 가능하지 않으므로 동일한 차트의 여러 복사본을 JFrame에 추가하려고 시도했습니다. 어떤 아이디어?창에 여러 개의 JFreeChart가 있습니다.

JFrame frame = new JFrame("Chart"); 
frame.getContentPane().add(new ChartPanel(chart1)); 
frame.getContentPane().add(new ChartPanel(chart2)); 
frame.pack(); 
frame.setVisible(true); 

이 코드를 사용하면 JFrame에서 하나의 차트 만 얻을 수 있습니다.

EDIT : 다른 데이터 세트와 차트를 추가했지만 그 중 하나만 표시합니다.

답변

4

문제의 원인은 frame.getContentPane()입니다. 콘텐츠 창 JFrame의 기본 레이아웃은 BorderLayout입니다. BorderLayouthere에 대해 자세히 알아보십시오. 이 작업

frame.getContentPane().add(new ChartPanel(chart)); 

frame.getContentPane().add(new ChartPanel(chart), BorderLayout.CENTER); 

동일 콘텐츠 창의 센터 지역에 ChartPanel를 추가합니다. 두 번째 ChartPanel도 CENTER 영역에 추가합니다. 그런 다음 동일한 영역에 두 개의 구성 요소를 추가합니다. 마지막으로 추가 된 요소는 이전에 추가 된 모든 요소를 ​​숨 깁니다. 따라서 두 번째 ChartPanel은 첫 번째 차트 패널을 숨 깁니다.

frame.getContentPane()에 대한 변경 레이아웃이 필요합니다.

동일한 차트를 두 개의 ChartPanel에 사용할 수 있습니다. 그것은 생산 코드가 아닙니다

JFrame frame = new JFrame("Chart"); 
frame.getContentPane().add(new ChartPanel(chart), BorderLayout.WEST); 
frame.getContentPane().add(new ChartPanel(chart), BorderLayout.EAST); 
frame.pack(); 
frame.setVisible(true); 

로 코드를 변경하십시오. 프레임에 두 개의 ChartPanel을 표시하는 예입니다.

+1

+1 레이아웃 고려. GridLayout을 사용하는 관련 예제 [here] (http://stackoverflow.com/a/7602126/230513)가있다. – trashgod

+0

고마워, 레이아웃에 문제가 있다는 의심을 품었다. 그러나 이것은 내가 스윙을 거의 사용하지 않는 것을 보여준다;) – pdel

1

다른 차트 인스턴스가 있어야합니다. 동일한 참조를 사용하면 ChartPanel에 추가 된 마지막 참조가 표시됩니다.

+0

다른 차트 인스턴스를 추가 (위 편집)하고 하나만 표시합니다. – pdel

관련 문제