加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何设置对话框控件Java FX / Java 8的图标

发布时间:2020-12-14 05:24:01 所属栏目:Java 来源:网络整理
导读:我可能会缺少一些非常明显的东西,但是我无法找到如何设置对话框组件的图标(ProgressDialog更精确).我知道如何做一个Stage,this.primaryStage.getIcons().add(new Image(getClass().getResourceAsStream(“/ icon / Logo.png”)))但是我没有找到Dialog系列的
我可能会缺少一些非常明显的东西,但是我无法找到如何设置对话框组件的图标(ProgressDialog更精确).我知道如何做一个Stage,this.primaryStage.getIcons().add(new Image(getClass().getResourceAsStream(“/ icon / Logo.png”)))但是我没有找到Dialog系列的任何东西.不知何故,设置舞台图标不会影响对话框图标.

谢谢

解决方法

Marco Jakob有一个非常好的教程 here,您可以在其中找到不仅如何使用对话框,还可以找到如何解决您的问题.

对于新的对话框(在JDK8u40早期版本中,或者具有JDK 8u25的openjfx-dialogs),或者对于ControlsFX的对话框,为了设置对话框的图标,可以使用此solution:

Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
stage.getIcons().add(
    new Image(this.getClass().getResource("<image>.png").toString()));

此代码段显示如何使用ControlsFX中的ProgressDialog,并为对话框设置图标:

@Override
public void start(Stage primaryStage) {

    Service<Void> service = new Service<Void>() {
        @Override protected Task<Void> createTask() {
            return new Task<Void>() {
                @Override protected Void call() throws InterruptedException {
                    updateMessage("Message . . .");
                    updateProgress(0,10);
                    for (int i = 0; i < 10; i++) {
                        Thread.sleep(300);
                        updateProgress(i + 1,10);
                        updateMessage("Progress " + (i + 1) + " of 10");
                    }
                    updateMessage("End task");
                    return null;
                }
            };
        }
    };

    Button btn = new Button("Start Service");
    btn.setOnAction(e -> {
        ProgressDialog dialog = new ProgressDialog(service);
        dialog.setTitle("Progress Dialog");
        dialog.setHeaderText("Header message");
        Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
        stage.getIcons().add(new Image(this.getClass().getResource("<image>.png").toString()));
        service.start();
    });

    Scene scene = new Scene(new StackPane(btn),300,250);
    primaryStage.setScene(scene);
    primaryStage.show();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读