Javafx 简明教程

JavaFX - Tooltip

tooltip 是一个小弹出窗口,当用户将鼠标悬停在节点或控件上时,它会显示一些附加信息。它主要用于解释按钮、菜单或图像的功能,或为文本字段提供一些提示。在下图中,我们可以看到说明菜单功能的工具提示 −

tooltip

Tooltip in JavaFX

在 JavaFX 中,工具提示由名为 Tooltip 的类表示,它是 javafx.scene.control 包的一部分。此包的每个 UI 组件都带有名为 setTooltip() 的内置方法,用于关联工具提示。我们可以通过将工具提示文本传递给 setText() 方法或使用下面列出的构造函数来指定工具提示文本 −

  1. Tooltip() − 这是默认构造函数,它构建一个没有任何文本的工具提示。

  2. Tooltip(String str) − 它使用预定义的文本构造一个新工具提示。

Steps to create a tooltip in JavaFX

要在 JavaFX 中创建工具提示,请按照以下步骤操作。

Step 1: Create a node to associate with Tooltip

我们知道工具提示会解释指定节点的功能。此节点可以是任何 JavaFX 组件,如菜单、图像和文本字段。此处,我们将把图像作为节点来使用。要在 JavaFX 中创建图像,实例化 ImageView 类,然后将其构造函数的参数值设为图像的路径。

//Passing path of an image
Image image = new Image(new FileInputStream("tutorials_point.jpg"));
//Setting the image view
ImageView imageView = new ImageView(image);

Step 2: Instantiate the Tooltip class

要在 JavaFX 中创建工具提示,实例化 Tooltip 类,然后使用以下代码将其构造函数的参数值设为工具提示文本 −

//Creating tool tip for the given image
Tooltip toolTipTxt = new Tooltip("This is the new logo of Tutorialspoint");

Step 3: Associate the tooltip to the node

为将工具提示与指定节点关联,我们使用 install() 方法,它接受 TooltipImageView 对象作为参数。

//Setting the tool tip to the image
Tooltip.install(imageView, toolTipTxt);

Step 4: Launching Application

创建工具提示后,请按照以下给定步骤正确启动应用程序 −

  1. 首先,创建一个 VBox ,该 VBox 垂直保存节点。

  2. 接下来,通过将 VBox 对象作为参数值传递给构造函数以及应用程序屏幕的尺寸来实例化名为 Scene 的类。

.

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

  2. 现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到阶段。

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

  4. 最后,借助 launch() 方法启动应用程序。

Example

在以下示例中,我们将在 JavaFX 应用程序中创建一个工具提示。将此代码另存为名称为 JavafxTooltip.java 的文件。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.VBox;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.stage.Stage;
public class JavafxTooltip extends Application {
   @Override
   public void start(Stage stage) throws FileNotFoundException {
      //Creating a label
      Label labeltext = new Label("Hover over Image to see the details....");
      //Passing path of an image
      Image image = new Image(new FileInputStream("tutorials_point.jpg"));
      //Setting the image view
      ImageView imageView = new ImageView(image);
      //Setting the position of the image
      imageView.setX(50);
      imageView.setY(25);
      //setting the fit height and width of the image view
      imageView.setFitHeight(350);
      imageView.setFitWidth(350);
      //Setting the preserve ratio of the image view
      imageView.setPreserveRatio(true);
      //Creating tool tip for the given image
      Tooltip toolTipTxt = new Tooltip("This is the new logo of Tutorialspoint");
      //Setting the tool tip to the image
      Tooltip.install(imageView, toolTipTxt);
      // to display the content vertically
      VBox box = new VBox(5);
      box.setPadding(new Insets(25, 5 , 5, 50));
      box.getChildren().addAll(labeltext, imageView);
      //Setting the stage
      Scene scene = new Scene(box, 400, 350);
      stage.setTitle("Example of Tooltip 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 JavafxTooltip.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxTooltip

执行以上代码后,它将生成一个图像工具提示,如下图所示的输出。

tooltip output

Adding icons to the Tooltip

图标是小图像,可直观地说明应用程序的命令或功能。要向 JavaFX 工具提示添加图标,我们使用 setGraphic() 方法,它接受 ImageView 对象并在工具提示文本的左侧显示图标。

Example

以下是将创建一个带图标工具提示的 JavaFX 程序。将此代码另存为名称为 JavafxTooltip.java 的文件。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.VBox;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javafx.stage.Stage;
public class JavafxTooltip extends Application {
   public void start(Stage stage) throws FileNotFoundException {
      // Creating a label
      Label labeltext = new Label("Hover over this text to see the tooltip....");
      // Instantiating Tooltip class
      Tooltip toolT = new Tooltip();
      // Passing path of an image
      Image icon = new Image(new FileInputStream("faviconTP.png"));
      // adding the icon for tooltip
      toolT.setGraphic(new ImageView(icon));
      // adding the text
      toolT.setText("This is the new logo of Tutorialspoint");
      // setting the tooltip to the label
      labeltext.setTooltip(toolT);
      //Setting the stage
      Scene scene = new Scene(labeltext, 400, 300);
      stage.setTitle("Example of Tooltip 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 JavafxTooltip.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxTooltip

执行后,上述程序将生成以下输出 −

tooltip output2