2013-04-21 95 views
1

我正在使用JFreeChart在我的程序中创建图表。我的问题是我无法正确设置高度。我已经尝试了所有我能想到的命令,但我已将其放在其他面板中,但没有任何效果。 我希望能够将它放在角落......或任何地方,并能够设置宽度和高度。我也尝试过setPrefferedSize,但它只适用于宽度。java饼图高度未正确放置

代码:

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); 
+2

尝试在frame.setVisible(true);之前调用'frame.pack();'。 – Bobulous 2013-04-21 18:04:01

+0

有没有办法做到这一点,而不会强制框架的大小与它内部的东西有关?我希望所有窗户的尺寸相同 – Ted 2013-04-21 18:33:05

+0

嗯,我的答案是修复它的那个,但我只能在24小时内接受它,原因是某种原因。尽管如此,你的加入是非常有用的,谢谢 – Ted 2013-04-22 12:55:47

回答

0

我已经找到了如何解决它,我不得不这样做是不使用的FlowLayout,而是一个GroupLayout的,因为面板正在使图表放大,就好像你将一个按钮放在flowLayout中一样,它将变成它所在区域的大小。感谢大家的惊人帮助。

+1

'流程图'采用了组件的首选大小,变得非常艰难。更多关于'GroupLayout' [这里](http://stackoverflow.com/a/8504753/230513)。您是否使用GUI编辑器? – trashgod 2013-04-22 09:43:59

+0

我使用它来自动设置布局,因为我是新手,我仍然有点被它的一些能力所吓倒。非常感谢你 – Ted 2013-04-22 12:54:36

+1

不客气。不要害怕尝试使用[简短,完整的示例](http://sscce.org/),例如this [one](http://stackoverflow.com/a/2561540/230513),这可能有助于你在学习的时候使用编辑器。 – trashgod 2013-04-22 14:43:51

3

一个JFreeChart不是JComponent,但ChartPanel是。您可以使用提及的任何适当方法控制尺寸here

我想要所有窗口的尺寸相同

在这种情况下,我会重写getPreferredSize()返回具有相等widthheight一个Dimension。您可以使用PiePlot#setCircular()来保存PiePlot的宽高比。

example显示图表的GridLayout(1, 0)每个具有ThermometerPlot

image

+0

我设法让图表在角落处变小,但仍然有一个巨大的灰色区域,其中的高度较早。 – Ted 2013-04-21 22:07:53

+0

我使框架大小仍然存在,通常它可以,但它覆盖了我加载的背景图像 – Ted 2013-04-21 22:54:12

+1

请编辑您的问题以包含显示您的方法的[sscce](http://sscce.org/)。 ['FauxImage'](http://stackoverflow.com/a/8090328/230513)可能是一个方便的附件。 – trashgod 2013-04-22 01:54:15