2014-02-25 74 views
0

我试图用一个名为“jfreechart”的库来绘制我的饼图。这里的问题是我无法集成witsh在包含2个JPanel的窗口中的不同Jframe因此,最终“统计数据”应该包含不在不同窗口中的饼图。 enter image description here把JFrame放到jPanel中

这里是班里的饼图

public class PieChart extends JFrame { 

    private static final long serialVersionUID = 1L; 

    public PieChart(String applicationTitle, String chartTitle) { 
     super(applicationTitle); 
     PieDataset dataset = createDataset(); 

     JFreeChart chart = createChart(dataset, chartTitle); 

     ChartPanel chartPanel = new ChartPanel(chart); 


     chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); 


     setContentPane(chartPanel); 

    } 


    private PieDataset createDataset() { 
     DefaultPieDataset result = new DefaultPieDataset(); 
     result.setValue("Tunis", 29); 
     result.setValue("Ariana", 20); 
     result.setValue("Sousse", 51); 
     return result; 

    } 


    private JFreeChart createChart(PieDataset dataset, String title) { 

    JFreeChart chart = ChartFactory.createPieChart3D(title,dataset,true,true,false); 

     PiePlot3D plot = (PiePlot3D) chart.getPlot(); 
     plot.setStartAngle(290); 
     plot.setDirection(Rotation.CLOCKWISE); 
     plot.setForegroundAlpha(0.5f); 
     return chart; 

    } 
} 
+1

把一个JFrame放到一个jPanel中,你确定吗? – ItachiUchiha

+0

1)PieChart扩展了JFrame,2)图像右边的视图是2个Jpanels –

+0

向PieChart类请求将ChartPanel的副本添加到其他Container。 – splungebob

回答

3

JPanel把一个JFrame是AFAIK不可能的,但你可以把饼图在JPanel

PieDataset dataset = createDataset(); 

JFreeChart chart = createChart(dataset, chartTitle); 

ChartPanel chartPanel = new ChartPanel(chart); 

chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); 

yourPanel.add(chartPanel);  // this line is new 
+0

你将不得不在eclipse中安装JFreeChart .jar。它已经安装在我以前使用它的计算机上。你能举出一个小型饼图的完整工作样本吗?这将是令人难以置信的好,非常有帮助。谢谢 –

+0

我从来没有使用'JFreeChart'。但我认为你可以像其他任何图书馆那样使用它。将jar文件添加到项目的构建路径,并简单地使用它:)顺便说一句。有一个很好的[教程](http://www.vogella.com/tutorials/JFreeChart/article.html)在那里使用'JFreeChart' – trylimits

+0

正确; [tag:jfreechart]的'learn more ...'中引用了更多示例。 – trashgod