Javafx 简明教程

JavaFX - Creating a Box

长方体是三维立体形状。长方体由 6 个矩形组成,这些矩形垂直放置。如果长方体使用方形面,则它是立方体;如果面是矩形,与立方体不同,则它看起来像鞋盒。

长方体是具有 length (深度)、 widthheight 的三维形状,如下面的图表所示 −

cuboid

在 JavaFX 中,这种类型的三维形状称为 Box;因为它可以是长方体或立方体,具体取决于形状的尺寸。

Box in JavaFX

在 JavaFX 中,三维框由一个名为 Box 的类表示。此类属于 javafx.scene.shape 包。

通过实例化此类,您可以在 JavaFX 中创建一个 Box 节点。

此类具有 3 个 double 数据类型的属性,即 −

  1. width − 框的宽度。

  2. height − 框的高度。

  3. 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, HeightDepth ,如以下代码块所示。

//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 应用程序:

  1. 通过将 Group 对象作为构造函数的参数值来实例化类 Scene 。还可以将应用程序屏幕的尺寸作为可选参数传递给构造函数。

  2. 使用 Stage 类的 setTitle() 方法为舞台设置标题。

  3. 使用名为 Stage 的类的 setScene() 方法向舞台添加场景对象。

  4. 使用名为 show() 的方法显示场景的内容。

  5. 最后,在 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 盒子:

drawing 3dbox

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 盒子。我们着色场景以区分盒子的平移位置。

translate box