1

我正在使用 JFreeChart 在我的程序中制作图表。我的问题是我无法正确设置高度。我已经尝试了所有我能想到的命令,我已经将它放在其他面板中,但是,没有任何效果。我希望能够把它放在角落的某个地方……或者真正的任何地方,并且能够设置宽度和高度。我也尝试过使用 setPreferedSize,但它只适用于宽度。

代码 :

DefaultPieDataset result = new DefaultPieDataset();
    result.setValue("TotalSwag", totalSwag);
    result.setValue("TotalYolo", totalYolo);
    result.setValue("TotalCool", totalCool);
    result.setValue("TotalLame", totalLame);
    JFreeChart chart = ChartFactory.createPieChart3D("Swag-O-meter", result, true, true, false);
    PiePlot3D plot = (PiePlot3D) chart.getPlot();
    plot.setStartAngle(290);
    plot.setDirection(Rotation.CLOCKWISE);
    plot.setForegroundAlpha(0.5f);
    ChartPanel chartPanel = new ChartPanel(chart, W, H, W, H, W, H,
            false, true, true, true, true, true);
    chartPanel.setMaximumSize(new Dimension(150, 150));

    charPanel.add(chartPanel);
    charPanel.setSize(W, H);
    contentPane.add(charPanel, BorderLayout.WEST);
4

2 回答 2

3

A JFreeChart is not a JComponent, but a ChartPanel is. You can control the size using any appropriate approach mentioned here.

I'd like all windows to be the same size.

In this case, I'd override getPreferredSize() to return a Dimension having equal width and height. You can use PiePlot#setCircular() to preserve the aspect ratio of the PiePlot.

This example shows a GridLayout(1, 0) of charts each having a ThermometerPlot:

image

于 2013-04-21T19:18:39.877 回答
0

我已经找到了解决方法,我所要做的就是不使用 flowLayout,而是使用 grouplayout,因为面板正在放大图表,就像你在 flowLayout 中放置一个按钮一样,它会变成大小它的包含区域。感谢大家的惊人帮助。

于 2013-04-22T09:31:57.183 回答