将JChart添加到面板

时间:2014-04-13 17:22:54

标签: java jfreechart

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

    }

我没有错误,但面板没有变化。 我可以改变面板的背景颜色,所以我知道在这方面什么都没有。 任何信息都会很棒,谢谢!

1 个答案:

答案 0 :(得分:1)

在某些时候,您必须将ChartPanel添加到封闭框架中的容器中,例如

this.add(chartPanel);

另外,还要考虑覆盖getPreferredSize(),如here所示,并建议here。另见Initial Threads。引用了更多示例here