【发布时间】:2021-08-31 14:33:25
【问题描述】:
我想在 JPanel 中添加一个饼图。我经历过this 和this。但这对我没有帮助。
我在调试器中尝试了这段代码,但它没有通过 X 行。不知何故,setScene 函数不起作用,并且面板中看不到饼图。
这是我的代码:
private void add_pie_chart(JPanel panel)
{
JFXPanel dataPanel = new JFXPanel();
PieChart pieChart = new PieChart();
ObservableList<PieChart.Data> data= FXCollections.observableArrayList(
new PieChart.Data("test1", 25),
new PieChart.Data("test 2", 25),
new PieChart.Data("test 3", 25),
new PieChart.Data("test 4", 25)
);
pieChart.setData(data);
pieChart.setTitle("test");
pieChart.setLabelsVisible(true);
Group root = new Group();
root.getChildren().add(pieChart);
Scene scene = new Scene(root);
dataPanel.setScene(scene); //line X
//not getting executing
panel.add(dataPanel, BorderLayout.CENTER);
panel.setVisible(true);
}
我不确定为什么会这样。请帮忙..
感谢任何帮助。 提前谢谢...
【问题讨论】:
-
“它没有越过 X 行”是什么意思?它是否抛出异常?如果是这样,请发布完整的堆栈跟踪。执行不能无缘无故停止。
-
这个方法在哪个线程上被调用?其中一部分应该在 FX 应用程序线程上,一部分在 AWT 事件调度线程上。
-
@James_D 时间太长了,什么也没发生,我无法跨步。我认为它以某种方式陷入了无限循环或其他东西..
-
怎么会陷入死循环?这看起来像一个线程问题。这是在哪个线程上执行的?创建并发布minimal reproducible example
-
@James_D 我提到了stackoverflow.com/questions/37742836/…。但是我没有将它们组合成一个单独的方法来生成饼图,而不是单独的方法。如果有问题请告诉我
标签: java swing javafx jpanel pie-chart