Как изменить значок диалогового окна оповещения? - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу изменить следующий значок предупреждения по умолчанию.Как я могу это сделать?

Это то, что я хочу изменить:

Screenshot

Я хочу изменить значок.Это означает, что я хочу изменить этот синий значок на что-то другое.Не изменять тип alret

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

У вас есть несколько вариантов.

Прежде всего, класс Alert принимает параметр AlertType при создании оповещения.Есть 5 встроенных опций на выбор, каждый со своим собственным значком:

INFORMATION, CONFIRMATION, WARNING, ERROR и NONE (который вообще не имеет значка)).

Вы можете выбрать один из этих значков при создании Alert, передав AlertType в конструктор:

Alert alert = new Alert(AlertType.ERROR);

ERROR screenshot


Если, однако, вы хотите предоставить собственное изображение значка, вы можете сделать это, открыв dialogPane 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();
    }
}

и получившегося Alert:

Custom Icon Alert


Примечание: Как показывает одинаково действительный ответ Саи Дандема, вы не ограничены использованием ImageView для графики.Метод setGraphic() принимает любой объект Node, так что вы также можете легко передать Button, Hyperlink или другой компонент пользовательского интерфейса.

0 голосов
/ 20 сентября 2018

Помимо того, что @Zephyr уже упомянул, если вы хотите установить свою собственную иконку / графику в том месте, куда вы указали на скриншоте, используйте метод setGraphic () класса javafx.scene.control.Dialog.

В приведенном ниже коде, хотя 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

...