JFreeChart 是一个在 Java 应用程序中创建复杂图表的强大库。它支持多种图表类型,如折线图、柱状图、饼图、散点图等。要在同一框架上显示多个图表,可以通过创建多个 ChartPanel
对象并将它们添加到一个 JTabbedPane
或者一个 JSplitPane
中来实现。
以下是一个简单的示例代码,展示如何使用 JFreeChart 在同一框架上显示两个图表:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import java.awt.BorderLayout;
public class MultipleChartsExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Multiple Charts Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
JTabbedPane tabbedPane = new JTabbedPane();
// 创建第一个图表(饼图)
PieDataset dataset1 = createPieDataset();
JFreeChart chart1 = ChartFactory.createPieChart("Pie Chart Example", dataset1, true, true, false);
ChartPanel chartPanel1 = new ChartPanel(chart1);
tabbedPane.addTab("Pie Chart", chartPanel1);
// 创建第二个图表(柱状图)
PieDataset dataset2 = createAnotherPieDataset(); // 假设这里有一个创建柱状图数据集的方法
JFreeChart chart2 = ChartFactory.createBarChart("Bar Chart Example", "Category", "Value", dataset2);
ChartPanel chartPanel2 = new ChartPanel(chart2);
tabbedPane.addTab("Bar Chart", chartPanel2);
frame.add(tabbedPane, BorderLayout.CENTER);
frame.setVisible(true);
}
private static PieDataset createPieDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Category 1", 40);
dataset.setValue("Category 2", 30);
dataset.setValue("Category 3", 20);
dataset.setValue("Category 4", 10);
return dataset;
}
private static PieDataset createAnotherPieDataset() {
// 这里应该是一个创建柱状图数据集的方法,为了示例,我们暂时复用饼图的数据集
return createPieDataset();
}
}
BorderLayout
或 GridBagLayout
。chartPanel.setMouseZoomable(true, true);
。通过上述方法,可以在同一框架上有效地展示多个 JFreeChart 图表,并解决可能出现的问题。
领取专属 10元无门槛券
手把手带您无忧上云