JavaFX - 超链接



超链接是允许用户在点击时导航到网页或执行操作的 UI 组件。它们类似于按钮,但外观和行为不同。例如,我们可以在显示窗口顶部的地址栏中找到任何网页的超链接,如下面的图所示:

Hyperlinks

在 JavaFX 中创建超链接

在 JavaFX 中,超链接由名为Hyperlink的类表示。此类属于包javafx.scene.control。通过实例化此类,我们可以在 JavaFX 中创建超链接。Hyperlink 类的构造函数如下所示:

  • Hyperlink() - 这是默认构造函数,它创建一个没有标签文本的超链接。

  • Hyperlink(String str) - 它创建一个具有指定标签文本的新超链接。

  • Hyperlink(String str, Node icons) - 它创建一个具有指定文本和图形标签的新超链接。

在 JavaFX 中,超链接以文本和图像两种形式创建。创建超链接时,我们的第一步是使用上述任何构造函数实例化 Hyperlink 类。然后,指定用户点击链接时应执行的操作。为此,我们需要向其setOnAction()方法添加一个EventHandler。此外,此 EventHandler 将调用指定的方法,这有助于导航。

通过更改setOnAction()方法的实现,我们可以为本地资源以及远程服务器上可用的资源创建超链接。

示例

在下面的 JavaFX 程序中,我们将创建一个文本超链接。将此代码保存在名为HyperlinkExample.java的文件中。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.geometry.Pos;
public class HyperlinkExample extends Application {
   @Override
   public void start(Stage stage) {
      // Creating a Label
      Label labelText = new Label("On clicking the below text, it will redirect us to tutorialspoint");
      // Create a hyperlink with text
      Hyperlink textLink = new Hyperlink("Visit TutorialsPoint");
      // Set the action of the hyperlink
      textLink.setOnAction(new EventHandler() {
         @Override
         public void handle(ActionEvent event) {
            // Open the web page in the default browser
            getHostServices().showDocument("https://tutorialspoint.com/index.htm");
         }
      });
      // Create a scene with the hyperlink
      VBox root = new VBox(labelText, textLink);
      root.setAlignment(Pos.CENTER); 
      Scene scene = new Scene(root, 400, 300);
      // Set the title and scene of the stage
      stage.setTitle("Hyperlink in JavaFX");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

要从命令提示符编译和执行保存的 Java 文件,请使用以下命令:

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

输出

执行上述程序将生成以下输出。

Hyperlink Output

创建图像超链接

要创建带有图像的超链接,请实例化ImageView类并将它的对象作为参数值传递给Hyperlink类的构造函数,如下一个示例所示。将此代码保存在名为HyperlinkImage.java的文件中。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.control.ContentDisplay;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.geometry.Pos;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class HyperlinkImage extends Application {
   @Override
   public void start(Stage stage) {
      // Creating a Label
      Label labelText = new Label("On clicking the below image, it will redirect us to tutorialspoint");
      // Create a hyperlink with image
      Image image = new Image("tutorials_point.jpg");
      ImageView imageV = new ImageView(image);
      imageV.setFitWidth(150);
      imageV.setFitHeight(150);
      Hyperlink imageLink = new Hyperlink("visit: ", imageV);
      // Set the content display position of the image
      imageLink.setContentDisplay(ContentDisplay.RIGHT);
      // Set the action of the hyperlink
      imageLink.setOnAction(new EventHandler() {
         @Override
         public void handle(ActionEvent event) {
            // Open the web page in the default browser
            getHostServices().showDocument("https://tutorialspoint.com/index.htm");
         }
      });
      // Create a scene with the hyperlink
      VBox root = new VBox(labelText, imageLink);
      root.setAlignment(Pos.CENTER); 
      Scene scene = new Scene(root, 400, 300);
      // Set the title and scene of the stage
      stage.setTitle("Hyperlink in JavaFX");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

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

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

输出

执行上述代码将生成以下输出。

Hyperlink Image
广告