Javafx 简明教程
JavaFX - Pie Chart
饼图是以不同颜色的圆形切片表示值的图表。这些切片都有标签,每个切片对应的值都显示在图表中。
以下是显示各个公司某个时间点移动销量的饼图。
Pie Chart in JavaFX
在 JavaFX 中,饼图由名为 PieChart 的类表示。这个类属于 javafx.scene.chart 包。
通过实例化此类,可以在 JavaFX 中创建一个 PieChart 节点。
此类有 5 个属性,如下所示:
-
clockwise − 这是一个布尔运算符;设置此运算符为 true 时,饼图中的数据切片将从饼图的起始角度开始按顺时针排列。
-
data − 它表示一个 ObservableList 对象,其中包含饼图的数据。
-
labelLineLength − 一个整型运算符,表示连接饼图标签和切片的线的长度。
-
labelsVisible − 这是一个布尔运算符;设置此运算符为 true 时,将绘制饼图的标签。默认情况下,此运算符设置为 true。
-
startAngle − 这是一个 double 类型的运算符,表示第一个饼图切片的起始角度。
要生成饼图,请准备一个 ObservableList 对象。在准备 ObservableList 对象后,将其作为参数传递给类 PieChart 的构造函数;或者,使用名为 setData() 的方法。
Steps to Generate Pie Chart
要在 JavaFX 中生成 PieChart ,请按照以下步骤操作。
Step 1: Creating a Class
创建一个 Java 类并继承包 javafx.application 的 Application 类,并按如下方式实现此类的 start() 方法。
public class ClassName extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
}
}
Step 2: Preparing the ObservableList Object
通过传递饼图数据准备接口 ObservableList 对象,如下所示:
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data("Iphone 5S", 13),
new PieChart.Data("Samsung Grand", 25),
new PieChart.Data("MOTO G", 10),
new PieChart.Data("Nokia Lumia", 22));
Step 3: Creating a PieChart Object
创建一个 PieChart ,方法是传递 ObservableList 对象,如下所示。
//Creating a Pie chart
PieChart pieChart = new PieChart(pieChartData);
Step 4: Setting the Title of the Pie Chart
使用类 PieChart 的 setTitle() 方法设置饼图的标题。它属于包 javafx.scene.chart −
//Setting the title of the Pie chart
pieChart.setTitle("Mobile Sales");
Step 5: Setting the Slices Clockwise
顺时针设置饼图的切片。这是通过向类 PieChart 的 setClockwise() 方法传递布尔值 true 来完成的。它属于包 javafx.scene.chart −
//setting the direction to arrange the data
pieChart.setClockwise(true);
Step 6: Set the Length of the Label Line
使用类 PieChart 的 setLabelLineLength() 方法设置标签线的长度,该类属于包 javafx.scene.chart ,如下所示:
//Setting the length of the label line
pieChart.setLabelLineLength(50);
Step 7: Set the Labels Visible
通过将布尔值 true 传递给类 PieChart 的方法 setLabelsVisible() 来设置饼形图的标签为可见。它属于包 javafx.scene.chart −
//Setting the labels of the pie chart visible
pieChart.setLabelsVisible(true);
Step 8: Set the Start Angle of the Pie Chart
使用类 PieChart 的 setStartAngle() 方法设置饼形图的起始角度。它属于包 javafx.scene.chart −
//Setting the start angle of the pie chart
pieChart.setStartAngle(180);
Step 9: Creating a Group Object
在 start() 方法中,通过实例化名为 Group 的类创建一个组对象。它属于包 javafx.scene 。将在上一步创建的 PieChart(节点)对象作为参数传递给 Group 类的构造函数。应按照以下方式进行此操作,以便将其添加到组中 −
Group root = new Group(piechart);
Step 10: Launching Application
最后,按照下面给出的步骤正确启动应用程序 −
-
首先,通过将组对象作为其构造函数的参数值传递来实例化名为 Scene 的类。你也可以将应用程序屏幕的尺寸作为可选参数传递给此构造函数。
-
然后,使用 Stage 类的 setTitle() 方法设置阶段标题。
-
现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到阶段。
-
使用名为 show() 的方法显示场景的内容。
-
最后,借助 launch() 方法启动应用程序。
Example
下表描述了使用饼形图的移动式销售情况。下表列出了不同的移动品牌及其销售情况(每天的单位)。
S.No |
Mobile Brands |
Sales (Units per day) |
1 |
Iphone 5S |
20 |
2 |
Samsung Grand |
20 |
3 |
MOTO G |
40 |
4 |
Nokia Lumia |
10 |
以下是 Java 程序,它使用 JavaFX 生成了一个饼形图,描述了上述数据。将此代码保存在名为 PieChartExample.java 的文件中。
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.chart.PieChart;
public class PieChartExample extends Application {
@Override
public void start(Stage stage) {
//Preparing ObservbleList object
ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data("Iphone 5S", 13),
new PieChart.Data("Samsung Grand", 25),
new PieChart.Data("MOTO G", 10),
new PieChart.Data("Nokia Lumia", 22));
//Creating a Pie chart
PieChart pieChart = new PieChart(pieChartData);
//Setting the title of the Pie chart
pieChart.setTitle("Mobile Sales");
//setting the direction to arrange the data
pieChart.setClockwise(true);
//Setting the length of the label line
pieChart.setLabelLineLength(50);
//Setting the labels of the pie chart visible
pieChart.setLabelsVisible(true);
//Setting the start angle of the pie chart
pieChart.setStartAngle(180);
//Creating a Group object
Group root = new Group(pieChart);
//Creating a scene object
Scene scene = new Scene(root, 600, 400);
//Setting title to the Stage
stage.setTitle("Pie chart");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
使用以下命令,从命令提示符编译并执行已保存的 java 文件。
javac --module-path %PATH_TO_FX% --add-modules javafx.controls PieChartExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls PieChartExample
在执行时,上述程序会生成一个 JavaFX 窗口,显示一个饼形图,如下所示。
Example
我们来看另一个示例,绘制一个 JavaFX 饼形图,说明月薪为 25,000 印度卢比的私有员工的每月支出。将文件保存在名为 PieChartEmployee.java 的文件下。
S.No |
Necessities |
Expenses |
1 |
Rent |
7500 |
2 |
Groceries |
1000 |
3 |
Transport |
1500 |
4 |
Savings |
10000 |
5 |
Miscellaneous |
5000 |
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.chart.PieChart;
public class PieChartEmployee extends Application {
@Override
public void start(Stage stage) {
//Preparing ObservbleList object
ObservableList pieChartData = FXCollections.observableArrayList(
new PieChart.Data("Rent", 7500),
new PieChart.Data("Groceries", 1000),
new PieChart.Data("Transport", 1500),
new PieChart.Data("Savings", 10000),
new PieChart.Data("Miscellaneous", 5000));
//Creating a Pie chart
PieChart pieChart = new PieChart(pieChartData);
//Setting the title of the Pie chart
pieChart.setTitle("Monthly Expenses");
//setting the direction to arrange the data
pieChart.setClockwise(true);
//Setting the length of the label line
pieChart.setLabelLineLength(50);
//Setting the labels of the pie chart visible
pieChart.setLabelsVisible(true);
//Setting the start angle of the pie chart
pieChart.setStartAngle(180);
//Creating a Group object
Group root = new Group(pieChart);
//Creating a scene object
Scene scene = new Scene(root, 600, 400);
//Setting title to the Stage
stage.setTitle("Pie chart");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
使用以下命令,从命令提示符编译并执行已保存的 java 文件。
javac --module-path %PATH_TO_FX% --add-modules javafx.controls PieChartEmployee.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls PieChartEmployee
在执行时,上述程序会生成一个 JavaFX 窗口,显示一个饼形图,如下所示。