如何使用 JavaFX 创建饼图?

javafxobject oriented programmingprogramming更新于 2026/1/8 4:28:17

在饼图中,我们将数据值表示为圆形的切片。每个切片都与其他切片不同(通常通过颜色区分)。在 JavaFX 中,您可以通过实例化 javafx.scene.chart.PieChart 类来创建饼图。

此类提供各种属性,通过使用各自的 setter 方法为它们设置值,您可以自定义饼图。

  • 默认情况下,饼图的切片按顺时针方向(从起始角度)放置。您可以使用 setClockwise() 方法将 clock 属性设置为 false,以逆时针排列它们。

  • 每个切片都与一个标签相关联。 (切片的名称作为值)默认情况下,这些标签是可见的。您可以使用 setLabelsVisible() 方法将标签可见属性设置为 false,使它们不可见。

  • 每个标签都有一条从相应切片指向它的线。您可以使用 setLabelLineLength() 方法设置此线的长度。

  • PieChart 类包含一个可观察的列表,类型为 (PieChart.Data),用于保存数据项(用于切片)。您可以使用 setData() 方法将值设置为饼图。此方法接受 ObservableList<PieChart.Data> 类型的对象作为参数。

将数据设置为饼图

类 PieChart.Data 表示饼图中的切片,您可以通过实例化它来创建切片(数据项)。此类的构造函数接受切片的名称(字符串)及其值作为参数。

要将数据设置为饼图,请通过实例化此类创建所有必需的切片,使用创建的对象作为 − 创建一个可观察列表

PieChart.Data obj1 = new PieChart.Data(name, value);
PieChart.Data obj2 = new PieChart.Data(name, value);…
…
ObservableList<PieChart.Data> data = FXCollections.observableArrayList(onj1, obj2,
obj3, etc…hellip;.);

然后,使用 setData() 方法将列表作为值设置为 data 属性。

示例

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.StackPane;
public class PieChartExample extends Application {
   public void start(Stage stage) {
      //创建饼图
      PieChart pieChart = new PieChart();
      //设置数据
      ObservableList<PieChart.Data> data = FXCollections.observableArrayList(
         new PieChart.Data("Work", 10),
         new PieChart.Data("Chores", 2),
         new PieChart.Data("Sleep", 8),
         new PieChart.Data("Others", 4)
      );
      pieChart.setData(data);
      //设置其他属性
      pieChart.setTitle("Activities");
      pieChart.setClockwise(true);
      pieChart.setLabelLineLength(10);
      pieChart.setLabelsVisible(true);
      pieChart.setStartAngle(360);
      //创建堆栈窗格来保存饼图
      StackPane pane = new StackPane(pieChart);
      //设置场景
      Scene scene = new Scene(pane, 600, 350);
      stage.setTitle("Pie chart");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

输出


相关文章