2013-07-24 2 views
1

저는 Java 및 JFreecharts에 익숙하지 않으며 Jfreechart를 사용하여 많은 차트 (barcharts 및 piecharts)를 만듭니다. 차트를 만들 때와 같이 표시합니다. 그러나 생성 된 모든 차트는 다른 차트 위에 겹쳐지고 마지막 차트는 맨 위에 표시됩니다. 마지막으로 차트를 닫으면 모든 차트가 닫힙니다. 단 하나의 프레임 만 가질 수 있는지 알고 싶습니다. 모든 차트는 '다음'및 '이전'버튼을 사용하여 탐색 할 수 있습니다. 누구든지이 경험이 있으면 공유하십시오. 미리 감사드립니다.Jfreechart : 여러 차트 표시

+0

더 스윙으로, JFreeChart를 함께 할 적은을 가지고 있습니다. JTabbedPane을 사용하면 "파이"탭이 있으므로 사용자가 즉시 파이 차트를 선택할 수 있습니다. 이전 + 다음으로 버튼 클릭시 다음/이전 차트를 패널로 설정하는 패널을 가질 수 있습니다. –

+0

@JoopEggen : 내가 가진 것은 6 개의 다른 매개 변수를 계산하고 각각이 Jfreechart (barchart, piechart, xylinechart)를 만드는 6 개의 함수입니다. 매번 지정된 jfreechart를 표시하는 패널을 구성합니다. 그런 다음 패널의 크기를 설정 한 다음 setContentPane (panel)을 호출하고 프레임을 표시로 설정합니다. –

답변

3

다음은 시작하기에 더 알기 쉬운 것입니다. NetBeans IDE와 같은 GUI 편집기를 사용하는 것이 좋습니다. 컴파일러를 보지 않고 다음 내용을 입력하십시오.

필드 : 프레임 내의

private static final int CHARTS = 6; 
private int currentChartNo = 0; 
private JButton previousButton = new JButton("<"); 
private JButton nextButton = new JButton(">"); 
private JPanel currentChartPanel = new JPanel(); 
private JPanel[] chartPanels = new JPanel[CHARTS]; 

초기화 :

// getContentPane(), having per default a BorderLayout. 
add(currentChartPanel , BorderLayout.CENTER); 
add(previousButton, BorderLayout.WEST); 
add(nextButton, BorderLayout.EAST); 

previousButton.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent event) { 
     if (currentChartNo > 0) { 
      getContentPane().remove(currentChartPanel); 
      --currentChartNo; 
      currentChartPanel = chartPanels[currentChartNo]; 
      getContentPane().add(currentChartPanel, BorderLayout.CENTER); 
      repaint(100L); 
     } 
    } 
}); 

이 패널을 포함하는 별도의 차트, 더 좋은 제조 될 수있다.

2

ChartPanel의 여러 인스턴스 대신에 here과 같이 일련의 데이터 세트를 만들고 단일 패널을 업데이트 할 수 있습니다.

image

관련 문제