Javafx 简明教程

JavaFX - Alert

一个 alert 指的是一个出现在屏幕上用于告知用户错误或任何事件的弹出窗口或对话框。警报的信息不仅仅限于错误消息,它可以是任意消息,包括一个简单的“hello”。例如,下图说明了有关文件夹删除的通知 −

alert

Alert in JavaFX

在 JavaFX 中,警报由一个命名为 Alert 的类表示。此类属于包 javafx.scene.control 。通过实例化此类,我们可以在 JavaFX 中创建警报。此外,我们需要将 Alert.AlertType 枚举值传递给构造函数。此值确定了对话框的默认属性,例如标题、页眉、图表和按钮。警报类的构造函数如下 −

  1. Alert(Alert.AlertType typeOfalert) − 它用于使用指定的警报类型构造警报。

  2. Alert(Alert.AlertType typeOfalert, String str, ButtonType buttons) − 它使用指定的警报类型、预定义文本和按钮类型构造警报。

How to create an Alert in JavaFX?

按照以下步骤在 JavaFX 中创建警报。

Step 1: Instantiate the Alert class

要创建警报,实例化 Alert 类并将 Alert.AlertType 枚举值作为参数值传递给其构造函数,如下面的代码所示 −

// Creating an Alert
Alert alert = new Alert(AlertType.INFORMATION);

Step 2: Set the Title for Alert Box

使用 setTitle() 方法为警报框设置一个合适的标题,如下面的代码块所示 −

// setting the title of alert box
alert.setTitle("Alert Box");

Step 3: Set the Header text for Alert Box

setHeaderText() 方法用于设置警报框的页眉。我们使用以下代码块将页眉文本设置为“null” −

// setting header text
alert.setHeaderText(null);

Step 4: Set the Content text for Alert Box

要为警报框设置内容文本,请使用 setContentText() 方法。它接受类型为 String 的文本,如下面的代码所示 −

// setting content text
alert.setContentText("Showing an Alert in JavaFX!");

Step 5: Launch the Application

一旦创建了警报并设置了其属性,则创建一个按钮,单击该按钮将显示警报。接下来,定义一个布局窗格,例如 VBox 和 HBox,方法是将 Button 对象传递给其构造函数。然后,设置 SceneStage 。最后,使用 launch() 方法启动应用程序。

Example

以下 JavaFX 程序演示了如何在 JavaFX 应用程序中生成警报。将此代码保存在名为 ShowAlert.java 的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.geometry.Pos;
public class ShowAlert extends Application {
   @Override
   public void start(Stage stage) {
      // Creating a Label
      Label label = new Label("On clicking the below button, it will display an alert....");
      // Creating a Button
      Button button = new Button("Show Alert");
      // Creating an Alert
      Alert alert = new Alert(AlertType.INFORMATION);
      alert.setTitle("Alert Box");
      alert.setHeaderText(null);
      alert.setContentText("Showing an Alert in JavaFX!");
      // Setting the Button's action
      button.setOnAction(e -> alert.showAndWait());
      // Create a VBox to hold the Label and Button
      VBox vbox = new VBox(label, button);
      vbox.setAlignment(Pos.CENTER);
      // Create a Scene with the VBox as its root node
      Scene scene = new Scene(vbox, 400, 300);
      // Set the Title of the Stage
      stage.setTitle("Alert in JavaFX");
      // Set the Scene of the Stage
      stage.setScene(scene);
      // Display the Stage
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

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

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

当我们执行上述代码时,它将生成以下输出。

alert output

Types of Alert in JavaFX

Alert 类是 Dialog 类的子类,并且它为许多预建的对话框(或警报)类型提供支持,即 confirmation, warning, information, error, and none 。通过更改 Alert.AlertType 枚举的值,我们可以使用这些不同的警报类型。

Example

在以下示例中,我们将演示 JavaFX 中的警报类型。将此代码保存在名为 JavafxAlert.java 的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.geometry.Pos;
import javafx.geometry.Insets;
public class JavafxAlert extends Application {
   @Override
   public void start(Stage stage) {
      // Creating a Label
      Label label = new Label("Types of alert in JavaFX...");
      // Creating Buttons
      Button cnfrmButtn = new Button("Confirm");
      Button infrmButtn = new Button("Inform");
      Button warngButtn = new Button("Warning");
      Button errorButtn = new Button("Error");
      // Creating information Alert and setting Button's action
      Alert infrmAlert = new Alert(AlertType.INFORMATION);
      infrmAlert.setContentText("It is an Information Alert!");
      infrmButtn.setOnAction(e -> infrmAlert.showAndWait());
      // Creating confirmation Alert and setting Button's action
      Alert cnfrmAlert = new Alert(AlertType.CONFIRMATION);
      cnfrmAlert.setContentText("It is a Confirmation Alert!");
      cnfrmButtn.setOnAction(e -> cnfrmAlert.showAndWait());
      // Creating warning Alert and setting Button's action
      Alert warngAlert = new Alert(AlertType.WARNING);
      warngAlert.setContentText("It is a Warning Alert!");
      warngButtn.setOnAction(e -> warngAlert.showAndWait());
      // Creating error Alert and setting Button's action
      Alert errorAlert = new Alert(AlertType.ERROR);
      errorAlert.setContentText("It is an Error Alert!");
      errorButtn.setOnAction(e -> errorAlert.showAndWait());
      // Create a HBox to hold the Buttons
      HBox box = new HBox(cnfrmButtn, infrmButtn, warngButtn, errorButtn);
      box.setAlignment(Pos.CENTER);
      box.setPadding(new Insets(15));
      box.setSpacing(10);
      // Create a VBox to hold the Label and Button
      VBox vbox = new VBox(label, box);
      vbox.setAlignment(Pos.CENTER);
      // Create a Scene with the VBox as its root node
      Scene scene = new Scene(vbox, 400, 300);
      // Set the Title of the Stage
      stage.setTitle("Alert in JavaFX");
      // Set the Scene of the Stage
      stage.setScene(scene);
      // Display the Stage
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

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

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

在执行上述代码时,它将生成一个显示四个按钮的窗口。每个按钮都与不同的警报相关联。

alert output2