2011-11-20 158 views
0

我正在试图制作专门嵌入在面板上的图表JInternalFrame;它是来自图书馆JFreeChart的饼图。我想将图表嵌入到变量名为jpPaneles的面板中,但它已被证明是不可能的。这对我的项目非常重要,所以如果有人有时间帮助我,我会非常感激。我正在使用NetBeans GUI编辑器。这里是代码,你可以看到我尝试添加frame1到面板。我该如何修复此代码,以便我可以将此JFreeChart添加到面板

import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartFrame; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PiePlot3D; 
import org.jfree.data.general.DefaultPieDataset; 

public class Eventad extends javax.swing.JInternalFrame { 

    public Eventad() { 
     initComponents(); 
    } 

    public void updateChart() { 
    } 

    public static void main(String arg[]) { 
     DefaultPieDataset pieDataset = new DefaultPieDataset(); 
     pieDataset.setValue("One", new Integer(10)); 
     pieDataset.setValue("Two", new Integer(20)); 
     pieDataset.setValue("Three", new Integer(30)); 
     pieDataset.setValue("Four", new Integer(10)); 
     pieDataset.setValue("Five", new Integer(20)); 
     pieDataset.setValue("Six", new Integer(10)); 
     JFreeChart chart = ChartFactory.createPieChart3D(
      "3D Pie Chart", pieDataset, true, true, true); 
     PiePlot3D p = (PiePlot3D) chart.getPlot(); 
     p.setForegroundAlpha(0.5f); 

     ChartFrame frame1 = new ChartFrame("3D Pie Chart", chart); 
     frame1.setVisible(true); 
     frame1.setSize(200, 200); 
     //Here im trying to add the frame1 to the Jpanel 
     this.jpPaneles.add(frame1); 
    } 
} 

回答

8

使用您的chart创建ChartPanel并添加ChartPanelJInternalFrame。将JInternalFrame添加到JDesktopPane。有关更多信息,请参见How to Use Internal Frames

附录:例如,

InternalPie

import java.awt.EventQueue; 
import javax.swing.JDesktopPane; 
import javax.swing.JFrame; 
import javax.swing.JInternalFrame; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.general.DefaultPieDataset; 

/** @see http://stackoverflow.com/questions/8199766 */ 
public class InternalPie { 

    private void display() { 
     JFrame f = new JFrame("InternalPie"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     DefaultPieDataset pieDataset = new DefaultPieDataset(); 
     pieDataset.setValue("One", new Integer(10)); 
     pieDataset.setValue("Two", new Integer(20)); 
     pieDataset.setValue("Three", new Integer(30)); 
     pieDataset.setValue("Four", new Integer(10)); 
     pieDataset.setValue("Five", new Integer(20)); 
     pieDataset.setValue("Six", new Integer(10)); 
     JFreeChart chart = ChartFactory.createPieChart3D(
      "3D Pie Chart", pieDataset, true, true, true); 
     ChartPanel cp = new ChartPanel(chart); 

     JInternalFrame jif = new JInternalFrame(
      "Chart", true, true, true, true); 
     jif.add(cp); 
     jif.pack(); 
     jif.setVisible(true); 

     JDesktopPane dtp = new JDesktopPane(); 
     dtp.add(jif); 
     f.add(dtp); 
     f.pack(); 
     f.setSize(700, 500); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new InternalPie().display(); 
      } 
     }); 
    } 
} 
+0

1。很好的答案。 –

相关问题