【问题标题】:java pie chart height is not properly placedjava饼图高度没有正确放置
【发布时间】:2013-04-21 17:56:03
【问题描述】:

我正在使用 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);

【问题讨论】:

  • 尝试在frame.setVisible(true); 之前调用frame.pack();
  • 有什么办法可以做到不强制框架的大小与里面的东西一致吗?我希望所有窗口的大小都相同
  • 嗯,我的答案是修复它,但出于某种原因,我只能在 24 小时内接受它。不过,您的补充非常有用,谢谢

标签: java swing charts jfreechart pie-chart


【解决方案1】:

JFreeChart 不是JComponent,但ChartPanel 是。您可以使用here 中提到的任何适当方法来控制大小。

我希望所有窗口的大小都相同

在这种情况下,我将覆盖 getPreferredSize() 以返回具有相等 widthheightDimension。您可以使用PiePlot#setCircular() 来保留PiePlot 的纵横比。

这个example 显示了一个GridLayout(1, 0) 的图表,每个图表都有一个ThermometerPlot

【讨论】:

  • 我设法在角落里把图表变小了,但是在之前的高度还有一个巨大的灰色区域。
  • 我将框架设置为任何尺寸,它仍然存在,通常没问题,但它覆盖了我加载的背景图像
  • 请编辑您的问题以包含一个sscce,以显示您的方法。 FauxImage 可能是一个方便的附属词。
  • 已编辑,也请不要以数值判断,这是一个迷你的“讽刺”项目,因为饼图变得非常困难
【解决方案2】:

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

【讨论】:

  • FlowLayout 采用组件的首选大小。更多关于GroupLayouthere。您使用的是 GUI 编辑器吗?
  • 我正在使用它来自动设置布局,因为我是摇摆新手,而且我仍然对它的一些能力感到害怕。非常感谢
  • 不客气。不要害怕尝试short, complete examples,例如one,它可以帮助您在学习时使用编辑器。
猜你喜欢
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2019-09-02
  • 1970-01-01
  • 2019-12-07
  • 2019-06-02
  • 1970-01-01
相关资源
最近更新 更多