📜  javafx 饼状图(1)

📅  最后修改于: 2023-12-03 15:16:03.852000             🧑  作者: Mango

JavaFX 饼状图

JavaFX 是一种用于构建交互式用户界面的基于 Java 的图形用户界面工具包。饼状图作为可视化的一种形式,常被用于展示数据的占比关系。JavaFX 提供了饼状图的绘制工具,使得我们能够在应用程序中以图形化的方式展示数据。

1. 创建一个简单的饼状图

首先,我们需要在 JavaFX 应用程序中引入饼状图的相关类(PieChart 和 PieChart.Data):

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class SimplePieChart extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 创建数据
        PieChart.Data slice1 = new PieChart.Data("Java", 17);
        PieChart.Data slice2 = new PieChart.Data("C++", 8);
        PieChart.Data slice3 = new PieChart.Data("Python", 25);
        PieChart.Data slice4 = new PieChart.Data("Others", 50);

        // 创建饼状图
        PieChart pieChart = new PieChart();
        pieChart.getData().add(slice1);
        pieChart.getData().add(slice2);
        pieChart.getData().add(slice3);
        pieChart.getData().add(slice4);

        // 创建布局
        StackPane root = new StackPane();
        root.getChildren().add(pieChart);

        // 创建场景和舞台
        Scene scene = new Scene(root, 600, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

这个表演创建了一个简单的饼状图,显示了四个部分的占比。我们创建了四个 PieChart.Data 对象,每个对象代表了一个分片。通过添加这些数据,我们生成了一个饼状图对象,并通过 StackPane 将其添加到场景中,最后显示在舞台上。

2. 饼状图的属性设置

JavaFX 的饼状图可以通过许多属性的设置进行自定义,以满足您的需求。这里给出一些示例:

2.1 饼状图的标题
// 设置饼状图的标题
pieChart.setTitle("Programming Language Popularity");
2.2 饼状图的图例
// 设置饼状图的图例可见
pieChart.setLegendVisible(true);
2.3 饼状图的标签
// 设置饼状图的标签可见
pieChart.setLabelLineLength(15);
pieChart.setLabelsVisible(true);
2.4 饼状图的样式
// 设置饼状图的样式
for (PieChart.Data data : pieChart.getData()) {
    Node node = data.getNode();
    node.setStyle("-fx-pie-color: " + data.getPieColor().toString().replace("0x", "#") + ";");
}
3. 饼状图的事件监听

JavaFX 的饼状图可以添加事件监听器来处理用户的操作行为,例如单击分片来显示详细信息。

3.1 单击饼状图分片
// 为饼状图添加事件监听器
for (PieChart.Data data: pieChart.getData()) {
    data.getNode().addEventHandler(MouseEvent.MOUSE_CLICKED,
        e -> {
            System.out.println(data.getName() + " : " + data.getPieValue() + "%");
        });
}

这个示例中,我们使用 addEventHandler 方法为饼状图的每个分片添加了一个 MouseEvent.MOUSE_CLICKED 事件监听器。当用户单击分片时,控制台将打印出分片的名称和其所占的百分比。

4. 总结

JavaFX 的饼状图是一种非常强大的工具,用于可视化数据的占比关系。在本文中,我们展示了如何创建一个简单的饼状图,以及如何通过属性设置和事件监听器来自定义它。现在,您可以尝试自己创建一个 JavaFX 应用程序,并添加饼状图作为其中一个组件来展示数据。