如何更改JFreeChart的大小

我已经添加了JFreeChart到一个JPanel (使用BorderLayout ),这是巨大的 。 有什么我可以做的,使其更小?

 public void generateChart() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); //set the values of the chart for(int i=0; i<8; i++) { dataset.setValue(income_array[i], "Income", Double.toString(percent_array[i])); } JFreeChart chart = ChartFactory.createBarChart( "Required Annual Income for a Variety of Interest Rates", "Percent", "Income", dataset, PlotOrientation.VERTICAL, false,true, false); ChartPanel cp = new ChartPanel(chart); chart.setBackgroundPaint(Color.white); chart.getTitle().setPaint(Color.black); CategoryPlot p = chart.getCategoryPlot(); p.setRangeGridlinePaint(Color.blue); //cp.setMaximumDrawHeight(5); //cp.setMaximumDrawWidth(5); //cp.setZoomOutFactor(.1); JPanel graph = new JPanel(); graph.add(cp); middle.add(graph, BorderLayout.CENTER); } 

在创buildChartPanel ,有几个选项会影响结果:

  1. 接受DEFAULT_WIDTHDEFAULT_HEIGHT :680 x 420。

  2. 在构造函数中指定首选的widthheight

  3. 在适当的情况下显式调用setPreferredSize()

  4. 重写getPreferredSize()以dynamic计算大小。

     @Override public Dimension getPreferredSize() { // given some values of w & h return new Dimension(w, h); } 
  5. select要添加ChartPanel的容器的布局 。 请注意, JPanel的默认布局是FlowLayout ,而JFrame的默认布局是BorderLayout 。 作为一个具体的例子, ThermometerDemo在构造函数中使用了首选值,在容器中使用了GridLayout来允许dynamicresize。

图片

尝试设置您的图表所在面板的大小。

您可能需要设置JPanel中间和ChartPanel cp