JFreeChart 是一個用于創建各種圖表(如折線圖、柱狀圖、餅圖等)的 Java 庫。要實現動態數據更新,你可以通過以下步驟來完成:
準備數據源:首先,你需要一個數據源來存儲要更新的數據。這可以是一個數組、列表或其他數據結構。當數據發生變化時,圖表會自動更新。
創建一個 ChartPanel
:ChartPanel
是 JFreeChart 的一個組件,它允許你在一個面板上顯示圖表。你需要將 ChartPanel
添加到一個窗口或面板中,以便用戶可以看到圖表。
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import javax.swing.JFrame;
public class DynamicChartExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Dynamic Chart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 創建一個示例數據集
double[] data = {10, 20, 30, 40, 50};
// 使用數據集創建一個 JFreeChart 對象
JFreeChart chart = ChartFactory.createLineChart("Dynamic Line Chart", "X-Axis", "Y-Axis", data);
// 將 JFreeChart 對象添加到 ChartPanel 中
ChartPanel chartPanel = new ChartPanel(chart);
// 將 ChartPanel 添加到窗口中
frame.add(chartPanel);
// 設置窗口大小并顯示
frame.pack();
frame.setVisible(true);
}
}
ChartPanel
的 repaint()
方法來重繪圖表。以下是一個簡單的示例,演示如何在按鈕點擊時更新數據:import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DynamicChartExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Dynamic Chart Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 創建一個示例數據集
double[] data = {10, 20, 30, 40, 50};
// 使用數據集創建一個 JFreeChart 對象
JFreeChart chart = ChartFactory.createLineChart("Dynamic Line Chart", "X-Axis", "Y-Axis", data);
// 將 JFreeChart 對象添加到 ChartPanel 中
ChartPanel chartPanel = new ChartPanel(chart);
// 將 ChartPanel 添加到窗口中
frame.add(chartPanel);
// 創建一個按鈕,用于更新數據
JButton updateButton = new JButton("Update Data");
updateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 更新數據集
for (int i = 0; i < data.length; i++) {
data[i] += 10;
}
// 重繪圖表
chartPanel.repaint();
}
});
// 將按鈕添加到窗口中
frame.add(updateButton, BorderLayout.SOUTH);
// 設置窗口大小并顯示
frame.pack();
frame.setVisible(true);
}
}
在這個示例中,當用戶點擊 “Update Data” 按鈕時,數據集中的每個值都會增加 10,圖表會自動更新以顯示新的數據。你可以根據需要修改這個示例,以適應你的具體需求。