利用JavaFx开发RIA桌面应用-Stage窗口半透明设计

转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/53074119

1.回顾

上一篇文章《利用JavaFx开发RIA桌面应用-加载等待界面设计》讲了如何设计等待界面,不过此时界面为透明效果,本文在这篇文章基础上开展说明如何设计半透明界面。

首先看看效果,加载等待界面半透明效果:

利用JavaFx开发RIA桌面应用-Stage窗口半透明设计_第1张图片

2.说明

设计半透明界面需要设置以下几点:

  • 设置stage透明,dialogStage.initStyle(StageStyle.TRANSPARENT);
  • 设置布局背景,-fx-background-color: rgba(255,255,255,0.5);
  • 设置scene的Fill属性为空, scene.setFill(null);

整体布局采用BorderPane,对其背景设置如下:

BorderPane borderPaneLayout = new BorderPane();
borderPaneLayout.setStyle(
                "-fx-background-color: rgba(255,255,255,0.5);"
        );

其余代码几乎与上一篇文章中一致,主要涉及界面调整代码:

public ShadowProgressPage(Task task) {

        MyStyleButton myStyleButton = MyStyleButton.getInstance();

        WindowsPositionObject windowsPosition = WindowsPositionObject.getInstance();

        dialogStage = new Stage();
        progressIndicator = new ProgressIndicator();

        dialogStage.initStyle(StageStyle.UNDECORATED);
        dialogStage.initStyle(StageStyle.TRANSPARENT);
        dialogStage.initModality(Modality.APPLICATION_MODAL);
        dialogStage.setWidth(windowsPosition.getLength());
        dialogStage.setHeight(windowsPosition.getWidth());
        dialogStage.setX(windowsPosition.getX());
        dialogStage.setY(windowsPosition.getY());

        BorderPane borderPaneLayout = new BorderPane();
        borderPaneLayout.setStyle(
                "-fx-background-color: rgba(255,255,255,0.5);"
        );

        // progress bar
        Label label = new Label(Constant.DATA_LOADING_TIP);
        label.setTextFill(Color.BLUE);
        progressIndicator.setProgress(-1F);
        progressIndicator.progressProperty().bind(task.progressProperty());

        Button cancel = myStyleButton.getDialogShadowButton("",ImageUtil.getImageView("image/close.png"));
        cancel.setAlignment(Pos.TOP_RIGHT);

        VBox vBox = new VBox();
        vBox.setSpacing(10);
        vBox.getChildren().addAll(cancel,progressIndicator,label);
        vBox.setAlignment(Pos.CENTER);

        borderPaneLayout.setTop(cancel);
        borderPaneLayout.setCenter(vBox);

        Scene scene = new Scene(borderPaneLayout);
        scene.setFill(null);
        dialogStage.setScene(scene);

        Thread inner = new Thread(task);
        inner.start();

        task.setOnSucceeded(new EventHandler() {
            public void handle(WorkerStateEvent event) {
                dialogStage.close();
            }
        });

        cancel.setOnMouseClicked(new EventHandler() {
            public void handle(MouseEvent event) {
                dialogStage.close();
            }
        });

        logger.info("ShadowProgressPage UI");
    }

相关文章:

  • 《 利用JavaFx开发RIA桌面应用-TableView操作》
  • 《 利用JavaFx开发RIA桌面应用-Clipboard剪贴板操作》
  • 《利用JavaFx开发RIA桌面应用-TextField替换PasswordField做密码框》
  • 《利用JavaFx开发RIA桌面应用-半透明界面设计》
  • 《利用JavaFx开发RIA桌面应用-加载等待界面设计》
  • 《利用JavaFx开发RIA桌面应用-文件拖拽》
  • 《利用JavaFx开发RIA桌面应用-改变stage的标题栏的图标》
  • 《利用JavaFx开发RIA桌面应用-事件监听》
  • 《利用JavaFx开发RIA桌面应用-ComboBox组合编辑框水平增长》
  • 《利用JavaFx开发RIA桌面应用-布局说明》
  • 《利用JavaFx开发RIA桌面应用-在线资料》

你可能感兴趣的:(JavaFX)