如何更改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
,有几个选项会影响结果:
-
接受
DEFAULT_WIDTH
和DEFAULT_HEIGHT
:680 x 420。 -
在构造函数中指定首选的
width
和height
。 -
在适当的情况下显式调用
setPreferredSize()
。 -
重写
getPreferredSize()
以dynamic计算大小。@Override public Dimension getPreferredSize() { // given some values of w & h return new Dimension(w, h); }
-
select要添加
ChartPanel
的容器的布局 。 请注意,JPanel
的默认布局是FlowLayout
,而JFrame
的默认布局是BorderLayout
。 作为一个具体的例子,ThermometerDemo
在构造函数中使用了首选值,在容器中使用了GridLayout
来允许dynamicresize。
尝试设置您的图表所在面板的大小。
您可能需要设置JPanel中间和ChartPanel cp