【问题标题】:How can I fix this code so I can add this JFreeChart to a panel如何修复此代码,以便将此 JFreeChart 添加到面板
【发布时间】:2011-11-20 05:58:31
【问题描述】:

我正在尝试制作一个专门嵌入到JInternalFrame 面板中的图表;这是来自库JFreeChart 的饼图。我想将图表嵌入到变量名为jpPaneles 的面板上,但事实证明这是不可能的。这对我的项目非常重要,所以如果有人有时间帮助我,我将不胜感激。我正在使用 NetBeans GUI 编辑器。这是代码,您可以看到我尝试将 frame1 添加到面板。

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);
    }
}

【问题讨论】:

    标签: java swing user-interface jfreechart


    【解决方案1】:

    使用您的chart 创建ChartPanel 并将ChartPanel 添加到JInternalFrame。将JInternalFrame 添加到JDesktopPane。请参阅How to Use Internal Frames 了解更多信息。

    附录:例如,

    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();
                }
            });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多