[英]Update JavaFx chart from Swing
我有一个绘制图表的JavaFx应用程序。
public class Test2 extends Application {
@Override public void start(Stage stage) {
final SwingNode chartSwingNode = new SwingNode();
chartSwingNode.setContent(
new ChartPanel(generatePieChart())
);
stage.setScene(
new Scene(new StackPane(chartSwingNode))
);
stage.show();
}
private JFreeChart generatePieChart() {
DefaultPieDataset dataSet = new DefaultPieDataset();
dataSet.setValue("China", 1344.0);
dataSet.setValue("India", 1241.0);
dataSet.setValue("United States", 310.5);
return ChartFactory.createPieChart(
"Population 2011", dataSet, true, true, false
);
}
public static void main(String[] args) { launch(args); }
}
然后我使用按钮从Swing调用它。
_btnStart.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
new Thread() {
@Override
public void run() {
Application.launch(Test2.class);
}
}.start();
}
});
当我单击按钮时,将显示图表。 现在,我想更新图表。 如何将值传递给Test2类并更新图表? 我应该改用JFXPanel吗?
如果您确实需要采用这种方式,为什么不使用Singleton ?
创建一个类ChartSingleton.java:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class ChartSingleton {
private static ChartSingleton instance = null;
private static ChartPanel chartPanel = null;
private ChartSingleton() {
chartPanel = new ChartPanel(generatePieChart());
}
public static ChartSingleton getInstance() {
if (instance == null) {
instance = new ChartSingleton();
}
return instance;
}
private JFreeChart generatePieChart() {
DefaultPieDataset dataSet = new DefaultPieDataset();
dataSet.setValue("China", 1344.0);
dataSet.setValue("India", 1241.0);
dataSet.setValue("United States", 310.5);
return ChartFactory.createPieChart(
"Population 2011", dataSet, true, true, false
);
}
public ChartPanel getChartPanel() {
return chartPanel;
}
}
然后替换该行:
chartSwingNode.setContent(new ChartPanel(generatePieChart()));
有了这个:
ChartSingleton chartSingleton = ChartSingleton.getInstance();
chartSwingNode.setContent(chartSingleton.getChartPanel());
现在,您可以使用以下方法通过ChartSingleton类来更新/修改图表:
chartSingleton.youNewMethodToModifyOrUpdateTheChart();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.