Javafx 简明教程
JavaFX - Creating a Cylinder
圆柱体是一个封闭的实体,它有两个通过曲面连接的平行(大多为圆形)底面。为了便于可视化,你可以将 3D 圆柱体想象成一组 2D 圆,它们堆叠在一起达到一定的高度;因此,即使它用两个参数进行描述,它也是一个三维形状。
圆柱体参数为 – 圆形底部的 radius 和圆柱体的 height ,如下所示:
Cylinder in JavaFX
在 JavaFX 中,圆柱体由称为 Cylinder 的类表示。此类属于包 javafx.scene.shape 。通过实例化此类,可以在 JavaFX 中创建圆柱体节点。
此类有 2 个 double 数据类型的属性:
-
height – 圆柱体的高度。
-
radius – 圆柱体的半径。
要绘制圆柱体,需要将值传递给这些属性,方法是将它们传递给此类的构造函数。这可以在实例化 Cylinder 类的同时按相同顺序完成;或者,通过使用其各个 setter 方法。
Steps to Draw 3D Cylinder
要在 JavaFX 中绘制圆柱体 (3D),请按照以下步骤操作。
Step 1: Creating a Class
在 JavaFX 中创建圆柱体对象,通过实例化属于包 javafx.scene.shape 的类 Cylinder 来实现。可以在 start() 方法中实例化此类,如下所示:
public class ClassName extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
//Creating an object of the Cylinder class
Cylinder cylinder = new Cylinder();
}
}
Step 2: Setting Properties to the Cylinder
使用其各个 setter 设置圆柱体的 height 和 radius ,如下所示。
//Setting the properties of the Cylinder
cylinder.setHeight(300.0f);
cylinder.setRadius(100.0f);
Step 3: Creating a Group Object
现在,通过实例化属于包 javafx.scene 的类 Group 来创建组对象。然后,将上一步创建的圆柱体 (节点) 对象作为参数传递给 Group 类的构造函数。应按如下方式对其进行操作,以便将其添加到组中:
Group root = new Group(cylinder);
Step 4: Launching an Application
创建 3D 对象后,按以下步骤启动 JavaFX 应用程序:
-
通过将 Group 对象作为构造函数的参数值来实例化类 Scene 。还可以将应用程序屏幕的尺寸作为可选参数传递给构造函数。
-
使用 Stage 类的 setTitle() 方法为舞台设置标题。
-
使用名为 Stage 的类的 setScene() 方法向舞台添加场景对象。
-
使用名为 show() 的方法显示场景的内容。
-
最后,在 Application 类中使用 launch() 方法启动应用程序。
Example
以下程序展示了如何使用 JavaFX 生成圆柱体。将此代码保存在一个名为 CylinderExample.java 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.CullFace;
import javafx.scene.shape.Cylinder;
import javafx.stage.Stage;
public class CylinderExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Cylinder
Cylinder cylinder = new Cylinder();
//Setting the properties of the Cylinder
cylinder.setHeight(300.0f);
cylinder.setRadius(100.0f);
//Creating a Group object
Group root = new Group(cylinder);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing a cylinder");
//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 CylinderExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls CylinderExample
执行后,上述程序会生成一个 JavaFX 窗口,其中显示一个圆柱体,如下所示。
Example
你还可以对 3D 形状应用转换。在此示例中,我们将尝试对 3D 圆柱体应用平移变换,并将其重新放置在应用程序中。将此代码保存在名为 TranslateCylinderExample.java 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.CullFace;
import javafx.scene.shape.Cylinder;
import javafx.scene.paint.Color;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class TranslateCylinderExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Cylinder
Cylinder cylinder = new Cylinder();
//Setting the properties of the Cylinder
cylinder.setHeight(150.0f);
cylinder.setRadius(100.0f);
Translate translate = new Translate();
translate.setX(200);
translate.setY(150);
translate.setZ(25);
cylinder.getTransforms().addAll(translate);
//Creating a Group object
Group root = new Group(cylinder);
//Creating a scene object
Scene scene = new Scene(root, 400, 300);
scene.setFill(Color.web("#81c483"));
//Setting title to the Stage
stage.setTitle("Drawing a cylinder");
//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 TranslateCylinderExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls TranslateCylinderExample
执行后,上述程序会生成一个 JavaFX 窗口,其中显示一个圆柱体,如下所示。