JavaFX - 绘制直线



通常,直线是在多维平面(例如 XY 平面)上无限延伸的几何结构。这种几何图形没有起点和终点;也没有可测量的尺寸,如宽度、深度等。尽管直线是一维对象,但它仍然可以存在于二维或更高维的平面中。

但是,具有起点和终点的直线段,称为“线段”,在日常几何中使用;这也是我们在本章中学习如何使用 JavaFX 创建的图形。它绘制如下面的图像所示。

Line

JavaFX 中的直线

在 JavaFX 中,直线或线段由名为Line的类表示。此类属于javafx.scene.shape包。通过实例化此类,您可以在 JavaFX 中创建一个直线节点。

此类具有 4 个双精度数据类型的属性,即 -

  • startX - 直线起点的 x 坐标。

  • startY - 直线起点的 y 坐标。

  • endX - 直线终点的 x 坐标。

  • endY - 直线终点的 y 坐标。

要绘制直线,您需要将值传递给这些属性,或者在实例化时按相同的顺序将它们传递给此类的构造函数。

在 JavaFX 中绘制直线的步骤

请按照以下步骤在 JavaFX 中绘制直线。

步骤 1:创建直线

您可以通过实例化名为Line的类来在 JavaFX 中创建直线,该类属于javafx.scene.shape包。如下所示实例化此类 -

//Creating a line object         
Line line = new Line();

请注意,实现 JavaFX 图形的整个代码(包括 Line 类的实例化)必须写在Application类的start()方法中,如下所示 -

public class ClassName extends Application {    
   public void start(Stage primaryStage) throws Exception {
      // Write code here
      Line line = new Line();
   }
} 

步骤 2:设置直线的属性

通过使用其各自的 setter 方法设置属性 startX、startY、endX 和 endY,指定在 XY 平面上绘制直线的坐标,如下面的代码块所示。

line.setStartX(100.0); 
line.setStartY(150.0); 
line.setEndX(500.0); 
line.setEndY(150.0); 

步骤 3:将直线对象添加到 Group

通过将 Line 对象作为参数值传递给其构造函数,实例化javafx.scene包的Group类,如下所示 -

Group root = new Group(line);

步骤 4:启动应用程序

创建 2D 对象后,请按照以下步骤正确启动应用程序 -

  • 首先,通过将 Group 对象作为参数值传递给其构造函数来实例化名为Scene的类。在此构造函数中,您还可以将应用程序屏幕的尺寸作为可选参数传递。

  • 然后,使用Stage类的setTitle()方法设置舞台的标题。

  • 现在,使用名为Stage的类的setScene()方法将 Scene 对象添加到舞台。

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

  • 最后,在launch()方法的帮助下启动应用程序。

示例

以下是使用 JavaFX 生成直线的程序。将此代码保存在名为DrawingLine.java的文件中。

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.shape.Line; 
import javafx.stage.Stage;  

public class DrawingLine extends Application{ 
   @Override
   public void start(Stage stage) { 
      //Creating a line object
      Line line = new Line(); 
         
      //Setting the properties to a line 
      line.setStartX(100.0); 
      line.setStartY(150.0); 
      line.setEndX(500.0); 
      line.setEndY(150.0); 
         
      //Creating a Group 
      Group root = new Group(line); 
         
      //Creating a Scene 
      Scene scene = new Scene(root, 600, 300); 
         
      //Setting title to the scene 
      stage.setTitle("Sample application"); 
         
      //Adding the scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of a scene 
      stage.show(); 
   }      
   public static void main(String args[]){ 
      launch(args); 
   } 
}       

使用以下命令从命令提示符编译并执行保存的 java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls DrawingLine.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls DrawingLine

输出

执行后,上述程序会生成一个 JavaFX 窗口,其中显示一条直线,如下所示。

Drawing Line

绘制多条直线

您还可以通过使用 addAll() 函数将所有直线组合在一起,在单个应用程序上绘制多条直线。演示相同内容的示例如下。在这里,我们使用四条线绘制一个正方形,并将背景颜色设置为“粉红色”。将此代码保存在名为DrawingMultipleLines.java的文件中。

示例

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Line; 
import javafx.stage.Stage;  

public class DrawingMultipleLines extends Application{ 
   @Override
   public void start(Stage stage) { 
      //Creating a line object
      Line line1 = new Line(); 
         
      //Setting the properties to a line 
      line1.setStartX(100.0); 
      line1.setStartY(150.0); 
      line1.setEndX(200.0); 
      line1.setEndY(150.0);
	  
	  // Setting Properties to other lines
	  // without setter methods
	  Line line2 = new Line(200, 150, 200, 250);
	  Line line3 = new Line(200, 250, 100, 250);
	  Line line4 = new Line(100, 250, 100, 150);
         
      //Creating a Group 
      Group root = new Group();
	  
      root.getChildren().addAll(line1,line2,line3,line4);
         
      //Creating a Scene 
      Scene scene = new Scene(root, 400, 400, Color.PINK); 
         
      //Setting title to the scene 
      stage.setTitle("Sample application"); 
         
      //Adding the scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of a scene 
      stage.show(); 
   }      
   public static void main(String args[]){ 
      launch(args); 
   } 
}     

使用以下命令从命令提示符编译并执行保存的 java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls DrawingMultipleLines.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls DrawingMultipleLines

输出

上述程序的输出窗口将如下所示获得。

Drawing Multiple Lines
广告