Javafx 简明教程
JavaFX - Alert
一个 alert 指的是一个出现在屏幕上用于告知用户错误或任何事件的弹出窗口或对话框。警报的信息不仅仅限于错误消息,它可以是任意消息,包括一个简单的“hello”。例如,下图说明了有关文件夹删除的通知 −
Alert in JavaFX
在 JavaFX 中,警报由一个命名为 Alert 的类表示。此类属于包 javafx.scene.control 。通过实例化此类,我们可以在 JavaFX 中创建警报。此外,我们需要将 Alert.AlertType 枚举值传递给构造函数。此值确定了对话框的默认属性,例如标题、页眉、图表和按钮。警报类的构造函数如下 −
-
Alert(Alert.AlertType typeOfalert) − 它用于使用指定的警报类型构造警报。
-
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 对象传递给其构造函数。然后,设置 Scene 和 Stage 。最后,使用 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
当我们执行上述代码时,它将生成以下输出。
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
在执行上述代码时,它将生成一个显示四个按钮的窗口。每个按钮都与不同的警报相关联。