Javafx 简明教程
JavaFX - Creating a Box
长方体是三维立体形状。长方体由 6 个矩形组成,这些矩形垂直放置。如果长方体使用方形面,则它是立方体;如果面是矩形,与立方体不同,则它看起来像鞋盒。
长方体是具有 length (深度)、 width 和 height 的三维形状,如下面的图表所示 −
在 JavaFX 中,这种类型的三维形状称为 Box;因为它可以是长方体或立方体,具体取决于形状的尺寸。
Box in JavaFX
在 JavaFX 中,三维框由一个名为 Box 的类表示。此类属于 javafx.scene.shape 包。
通过实例化此类,您可以在 JavaFX 中创建一个 Box 节点。
此类具有 3 个 double 数据类型的属性,即 −
-
width − 框的宽度。
-
height − 框的高度。
-
depth − 框的深度。
要绘制三次曲线,您需要通过将值传递给此类的构造函数来传递这些属性。在实例化时必须按照相同的顺序执行此操作;或者,使用它们的各自 setter 方法。
Steps to Draw 3D Box
若要在 JavaFX 中绘制 3D 盒子,请执行以下步骤。
Step 1: Creating a Box
可以通过实例化名为 BOX 、属于包 javafx.scene.shape 的类来在 JavaFX 中创建盒子。可以在 Application 类的 start() 方法中按如下方式实例化此类。
public class ClassName extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
//Creating an object of the class Box
Box box = new Box();
}
}
Step 2: Setting Properties to the Box
使用各自的 setter 方法设置 3D 盒子的属性 Width, Height 和 Depth ,如以下代码块所示。
//Setting the properties of the Box
box.setWidth(200.0);
box.setHeight(400.0);
box.setDepth(200.0);
Step 3: Creating a Group Object
在 start() 方法中,通过实例化名为 Group 、属于包 javafx.scene 的类来创建组对象。
将前一步中创建的盒子(节点)对象作为参数传递给 Group 类构造函数。应执行此操作以将其添加到组,如下所示:
Group root = new Group(box);
Step 4: Launching an Application
创建 3D 对象后,按以下步骤启动 JavaFX 应用程序:
-
通过将 Group 对象作为构造函数的参数值来实例化类 Scene 。还可以将应用程序屏幕的尺寸作为可选参数传递给构造函数。
-
使用 Stage 类的 setTitle() 方法为舞台设置标题。
-
使用名为 Stage 的类的 setScene() 方法向舞台添加场景对象。
-
使用名为 show() 的方法显示场景的内容。
-
最后,在 Application 类中使用 launch() 方法启动应用程序。
Example
以下是使用 JavaFX 生成的 3D 盒子程序。将此代码保存在名为 BoxExample.java 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Box;
import javafx.stage.Stage;
public class BoxExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Box
Box box = new Box();
//Setting the properties of the Box
box.setWidth(200.0);
box.setHeight(400.0);
box.setDepth(200.0);
//Creating a Group object
Group root = new Group(box);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing a Box");
//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 BoxExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls BoxExample
执行后,上述程序将生成一个 JavaFX 窗口,显示一个如下图所示的 3D 盒子:
Example
在前面的示例中,我们没有指定用以绘制盒子的起始和结束坐标。但是,使用动画类的 translateX 和 translateY 属性,可以重新定位 JavaFX 应用程序中的盒子。我们来看下面的一个示例,并将其保存在名为 TranslateBoxExample.java 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Box;
import javafx.scene.paint.Color;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class TranslateBoxExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Box
Box box = new Box();
//Setting the properties of the Box
box.setWidth(200.0);
box.setHeight(200.0);
box.setDepth(200.0);
Translate translate = new Translate();
translate.setX(200);
translate.setY(150);
translate.setZ(25);
box.getTransforms().addAll(translate);
//Creating a Group object
Group root = new Group(box);
//Creating a scene object
Scene scene = new Scene(root, 400, 300);
scene.setFill(Color.web("#81c483"));
//Setting title to the Stage
stage.setTitle("Translate a Box");
//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 TranslateBoxExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls TranslateBoxExample
执行后,上述程序将生成一个 JavaFX 窗口,显示一个如下图所示的 3D 盒子。我们着色场景以区分盒子的平移位置。