如何更改警报对话框的图标?

时间:2018-09-20 03:29:53

标签: java user-interface javafx alert

我想更改以下警报消息的默认图标。我该怎么办?

这是我要更改的内容:

Screenshot

我想更改图标。这意味着我想将该蓝色图标更改为其他名称。不更改警报类型

2 个答案:

答案 0 :(得分:6)

除了@Zephyr所提到的内容之外,如果要在屏幕快照中所指的位置设置自己的自定义图标/图形,请使用javafx.scene.control.Dialog类的setGraphic()方法。

在以下代码中,尽管alertType为INFORMATION,但它将使用提供的图形节点覆盖预定义的图标。

Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("My Title");
alert.setContentText("My Content text");
alert.setHeaderText("My Header");
alert.setGraphic(new Button("My Graphic"));
alert.show();

enter image description here

答案 1 :(得分:6)

您有两种选择。

首先,Alert类在创建警报时接受一个AlertType参数。有5个内置选项可供选择,每个选项都有其自己的图标:

INFORMATIONCONFIRMATIONWARNINGERRORNONE(根本不提供图标)。

在创建Alert时,可以通过将AlertType传递给构造函数来选择以下图标之一:

Alert alert = new Alert(AlertType.ERROR);

ERROR screenshot


但是,如果要提供自己的图标图像,可以通过访问dialogPane的{​​{1}}并设置Alert属性来实现:

graphic

下面是一个简单的应用程序,演示了如何为alert.getDialogPane().setGraphic(new ImageView("your_icon.png")); 使用自定义图标图像:

Alert

产生的import javafx.application.Application; import javafx.scene.control.Alert; import javafx.scene.image.ImageView; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { // Build the Alert Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Alert Test"); alert.setHeaderText("This uses a custom icon!"); // Create the ImageView we want to use for the icon ImageView icon = new ImageView("your_icon.png"); // The standard Alert icon size is 48x48, so let's resize our icon to match icon.setFitHeight(48); icon.setFitWidth(48); // Set our new ImageView as the alert's icon alert.getDialogPane().setGraphic(icon); alert.show(); } }

Custom Icon Alert


注意:正如Sai Dandem的同样有效的答案所示,您并不仅限于使用Alert作为图形。 ImageView方法接受任何setGraphic()对象,因此您可以轻松地传递NodeButton或其他UI组件。