最简单的方法是使用Swing创建窗口(包含图表的窗口)。
如果这样做,代码看起来会像这样:
JFrame frame = new JFrame("Chart");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
然后您应该将图表添加到fxPanel中,由于JavaFX是线程安全的,因此您将不得不使用Platform.runLater:
Platform.runLater(new Runnable() {
@Override
public void run() {
BarChartSample chart = new BarChartSample();
fxPanel.setScene(new Scene(chart));
}
});
希望它有所帮助!
编辑:
图表应该长这样:
BarChart<String, Number> chart = getChart();
上一行代码应该在哪个位置:
Platform.runLater(new Runnable() {
@Override
public void run() {
}
});
这是因为JavaFX是线程安全的。
创建它的方法如下:
public BarChart<String, Number> getChart() {
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
final BarChart<String, Number> bc = new BarChart<String, Number>(xAxis,
yAxis);
bc.setTitle("Country Summary");
xAxis.setLabel("Country");
yAxis.setLabel("Value");
XYChart.Series series1 = new XYChart.Series();
series1.setName("2003");
series1.getData().add(new XYChart.Data(austria, 25601.34));
series1.getData().add(new XYChart.Data(brazil, 20148.82));
series1.getData().add(new XYChart.Data(france, 10000));
series1.getData().add(new XYChart.Data(italy, 35407.15));
series1.getData().add(new XYChart.Data(usa, 12000));
XYChart.Series series2 = new XYChart.Series();
series2.setName("2004");
series2.getData().add(new XYChart.Data(austria, 57401.85));
series2.getData().add(new XYChart.Data(brazil, 41941.19));
series2.getData().add(new XYChart.Data(france, 45263.37));
series2.getData().add(new XYChart.Data(italy, 117320.16));
series2.getData().add(new XYChart.Data(usa, 14845.27));
XYChart.Series series3 = new XYChart.Series();
series3.setName("2005");
series3.getData().add(new XYChart.Data(austria, 45000.65));
series3.getData().add(new XYChart.Data(brazil, 44835.76));
series3.getData().add(new XYChart.Data(france, 18722.18));
series3.getData().add(new XYChart.Data(italy, 17557.31));
series3.getData().add(new XYChart.Data(usa, 92633.68));
Scene scene = new Scene(bc, 800, 600);
bc.getData().addAll(series1, series2, series3);
return bc;
}
BarChartSample.java
中。但是你代码的问题在于new Scene(chart)
对类型为BarChartSample
的参数不适用。我做错了什么? - Kenneth Howlett