2014-02-15 1 views
0

JFrame에서 전체 차트를 정렬하려고하지만 JChartPanels에서 정상적인 구성 요소 코드가 작동하지 않습니다. 처음에는 JChartPanel에서 setAligmentX와 Y를 시도했지만 작동하지 않았습니다. 그런 다음 JChartPanel을 JPanel에 추가 한 다음 setAlignment에 추가하려고 시도했지만 JPanel에 JChartPanel을 추가하면 그래프가 더 이상 표시되지 않습니다.jFreeChart 정렬 (setAlignmentX 및 Y?)

아래의 코드는 JFrame에서 기본 왼쪽 상단 위치에 그래프를 만듭니다. 그래프를 정렬 할 필요가 있습니다. 이후에 내 용도에 맞게 값을 변경하기 때문에 값을 사용하십시오.

위에서 언급 한 시도 (오류)의없이 포함 된 코드 :

import java.awt.*; 
import javax.swing.*; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.data.xy.XYSeries; 
import org.jfree.data.xy.XYSeriesCollection; 

public class ChartTest extends javax.swing.JFrame { 

public ChartTest() { 

    XYSeries Goals = new XYSeries("Goals Scored"); 
    Goals.add(1, 1.0); 
    Goals.add(2, 3.0); 
    Goals.add(3, 2.0); 
    Goals.add(4, 0.0); 
    Goals.add(5, 3.0); 
    XYDataset xyDataset = new XYSeriesCollection(Goals); 

    JFreeChart chart = ChartFactory.createXYLineChart("Goals Scored Over Time", "Fixture Number", "Goals", xyDataset, PlotOrientation.VERTICAL, true, true, false); 

    JPanel jPanel = new JPanel(); 
    jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.PAGE_AXIS)); 
    jPanel.setVisible(true); 
    jPanel.setSize(300, 300); 

    ChartPanel CP = new ChartPanel(chart) { 
     @Override 
     public Dimension getPreferredSize() { 
      return new Dimension(300, 300); 
     } 
    }; 
    CP.setMouseWheelEnabled(true); 
    add(CP); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    pack(); 
    initComponents(); 
} 

public static void main(String args[]) { 

    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new ChartTest().setVisible(true); 
     } 
    }); 
} 
+0

당신은 [예]를 들어, 바깥 쪽 패널의 레이아웃을 변경해야 할 수도 있습니다 (http://stackoverflow.com 여기에 참조 할 수 있도록 완벽한 동작하는 예제 양식입니다/a/5630271/230513). – trashgod

+0

이해가 안됩니다. 'new FlowLayout (FlowLayout.RIGHT, 3,3)'을 사용하여 "부모"jPanel의 레이아웃을 변경 한 다음'jPanel.add (CP);를 사용하여 ChartPanel을 추가하면 결과는 그냥 빈 창이됩니다 ... – AppreciateTheHelp

답변

1

결과는 비어있는 창입니다.

GUI 편집기의 구현이 initComponents()에 잘못이라고 생각됩니다. 볼 때 생성 된 코드를 검사해야합니다.

image

Minimal, Complete, Tested and Readable Example :

import java.awt.Dimension; 
import javax.swing.BoxLayout; 
import javax.swing.JPanel; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.data.xy.XYSeries; 
import org.jfree.data.xy.XYSeriesCollection; 

public class ChartTest extends javax.swing.JFrame { 

    public ChartTest() { 

     XYSeries Goals = new XYSeries("Goals Scored"); 
     Goals.add(1, 1.0); 
     Goals.add(2, 3.0); 
     Goals.add(3, 2.0); 
     Goals.add(4, 0.0); 
     Goals.add(5, 3.0); 
     XYDataset xyDataset = new XYSeriesCollection(Goals); 

     JFreeChart chart = ChartFactory.createXYLineChart(
      "Goals Scored Over Time", "Fixture Number", "Goals", 
      xyDataset, PlotOrientation.VERTICAL, true, true, false); 

     JPanel jPanel = new JPanel(); 
     jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.PAGE_AXIS)); 
     jPanel.setVisible(true); 
     jPanel.setSize(300, 300); 

     ChartPanel CP = new ChartPanel(chart) { 
      @Override 
      public Dimension getPreferredSize() { 
       return new Dimension(400, 300); 
      } 
     }; 
     CP.setMouseWheelEnabled(true); 
     add(CP); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     pack(); 
    } 

    public static void main(String args[]) { 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new ChartTest().setVisible(true); 
      } 
     }); 
    } 
}