我是使用API的新手。 我试图在面板上显示图表。 我已经设置了libs并且它们正在工作。 使用的API是JFreeCharts。
我创建了一个名为JChart的类:
public class JChart extends JFrame
{
private static final long serialVersionUID = 1L;
public JChart(String applicationTitle, String chartTitle)
{
// This will create the dataset
PieDataset dataset = createDataset();
// based on the dataset we create the chart
JFreeChart chart = createChart(dataset, chartTitle);
// we put the chart into a panel
ChartPanel chartPanel = new ChartPanel(chart);
// default size
chartPanel.setPreferredSize(new java.awt.Dimension(200, 150));
}
/**
* Creates a sample dataset
*/
private PieDataset createDataset() {
DefaultPieDataset result = new DefaultPieDataset();
result.setValue("Linux", 29);
result.setValue("Mac", 20);
result.setValue("Windows", 51);
return result;
}
/**
* Creates a chart
*/
private JFreeChart createChart(PieDataset dataset, String title) {
JFreeChart chart = ChartFactory.createPieChart3D(title, // chart title
dataset, // data
true, // include legend
true,
false);
PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setStartAngle(290);
plot.setDirection(Rotation.CLOCKWISE);
plot.setForegroundAlpha(0.5f);
return chart;
}
}
在我的表格中,我有一个方法:
private void LoadMyGraphs()
{
JChart chart = new JChart("name", "title");
myGraphPanel.add(chart);
}
我没有错误,但面板没有变化。 我可以改变面板的背景颜色,所以我知道在这方面什么都没有。 任何信息都会很棒,谢谢!
答案 0 :(得分:1)
在某些时候,您必须将ChartPanel
添加到封闭框架中的容器中,例如
this.add(chartPanel);
另外,还要考虑覆盖getPreferredSize()
,如here所示,并建议here。另见Initial Threads。引用了更多示例here。