JFreeChart не работает и блокирует мой код - PullRequest
0 голосов
/ 06 января 2019
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 голосов
/ 06 января 2019

Чтобы избежать таких аномалий, убедитесь, что вы создаете и манипулируете объектами Swing GUI only в потоке событий диспетчеризации . Как отмечалось здесь , «программа может отображаться для правильной работы, только с загадочным сбоем в другой среде». Для справки, я изменил ваш пример соответственно.

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