java - 如何修复此代码以便我可以将此 JFreeChart 添加到面板中

标签 java swing user-interface jfreechart

我正在尝试制作一个专门嵌入在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);
    }
}

最佳答案

使用您的图表创建ChartPanel并将 ChartPanel 添加到 JInternalFrame。将 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();
            }
        });
    }
}

关于java - 如何修复此代码以便我可以将此 JFreeChart 添加到面板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199766/

相关文章:

java - 使用 Apache Spark SQL 和 Java 直接运行 sql 查询

java - 为 JPanel 使用 addMouseListener() 和 paintComponent()

java - 如何使用 JFileChooser 将文件保存到选定的目录

html - 字段上的 CSS 居中文本

python - 禁用从 GUI (PyQt) 打开 cmd

java - 如何减小图像尺寸?

java - final 以某种方式导致静态行为

java - 如何从可运行的可调用对象中获取类名

java - 从 JTable 拖放到 JLayeredPane

java - 当选择一个值时,在 JComboBox 中仅显示一个值