[英]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.