JFreeChart无法正常工作并阻止我的代码

时间:2019-01-06 08:52:25

标签: java eclipse jfreechart

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

public class JfreeChartPie {

    System.out.println("piechart");

    public static void main(String[] args) {

        System.out.println("piechart");
        // TODO Auto-generated method stub
        // create a dataset...
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("Category 1", 43.2);
        dataset.setValue("Category 2", 27.9);
        dataset.setValue("Category 3", 79.5);
        // create a chart...
        JFreeChart chart = ChartFactory.createPieChart(
        "Sample Pie Chart",
        dataset,
        true,
        // legend?
        true,
        // tooltips?
        false
        // URLs?
        );
        // create and display a frame...
        ChartFrame frame = new ChartFrame("First", chart);
        //frame.pack();
        frame.setSize(300, 300);
        frame.setVisible(true);
    }
}

我运行的是Debian 9 GNU Linux和Eclipse 2018-09 我从控制台获得的只是关于jfreechart许可证的文本,看来它并没有执行代码。我没有问题。

1 个答案:

答案 0 :(得分:1)

为避免此类异常,请验证您在event dispatch thread上仅 构造和操作Swing GUI对象。如here所述,“程序可能会出现正常工作,只是在不同的环境中神秘地失败。”供参考,我已相应修改了您的示例。

pie chart

$ javac -cp .:$JFC JFreeChartPie.java && "$JRE" -cp .:$JFC JFreeChartPie
import java.awt.EventQueue;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class JFreeChartPie {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                System.out.println("piechart");
                DefaultPieDataset dataset = new DefaultPieDataset();
                dataset.setValue("Category 1", 43.2);
                dataset.setValue("Category 2", 27.9);
                dataset.setValue("Category 3", 79.5);
                JFreeChart chart = ChartFactory.createPieChart(
                    "Sample Pie Chart", dataset, true, true, false);
                ChartFrame frame = new ChartFrame("Title", chart);
                frame.pack();
                frame.setSize(400, 400);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}