单击按钮后,JavaFX更改场景

时间:2017-11-21 09:09:20

标签: java javafx

我有一个java桌面应用程序,用于检查某些文件的新版本是否可用,并要求用户下载它。当用户单击是时,问题仍然可见,我不会显示“下载,请稍候”等消息。但我不知道那是怎么做的......

private void updateAvailable(Stage stage) {
    stage.setTitle("A new version is available. Update?");
    stage.initStyle(StageStyle.UNDECORATED);
    Label label = new Label(stage.getTitle());
    label.setStyle("-fx-font-size: 25");
    Button yesButton = new Button("YES");
    Button noButton = new Button("NO");

    HBox buttons = new HBox(10, yesButton, noButton);
    buttons.setAlignment(Pos.CENTER);
    yesButton.setStyle("-fx-font-weight: bold");
    yesButton.setOnAction(event -> downloadFiles());

    noButton.setStyle("-fx-font-weight: bold");
    noButton.setOnAction(event -> executeApp());

    VBox root = new VBox(label, buttons);
    root.setAlignment(Pos.CENTER);
    root.setSpacing(20);
    root.setPadding(new Insets(25));
    root.setStyle("-fx-border-color: lightblue");

    stage.setScene(new Scene(root));
    stage.show();
}


private void downloadFiles(){
    updaterService.backupCurrentVersion();
    updaterService.downloadNewestVersion();
}

我尝试在下载方法中创建一个新场景(在下载开始之前)并隐藏当前但不起作用,新场景仅在下载完成时闪烁。

这样做最好的方法是什么?我想我很想念场景是如何运作的

2 个答案:

答案 0 :(得分:2)

您可以使用信息对话框执行此作业。 JavaFX为此提供了Alert类。下面的内容可能对您的情况有所帮助:

displayMessage(){
    Alert alert = new Alert(AlertType.INFORMATION);
    alert.setTitle("Information Dialog");
    alert.setHeaderText(null);
    alert.setContentText("Downloading, please wait");

    alert.showAndWait();
}

上述方法可以包含在下载按钮处理程序中。

您可以在Oracle's documentation中找到有关Alert课程的更多信息 可以包含上面的代码

答案 1 :(得分:0)

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage; 

public class Main extends Application {

    Stage window;
    Button button;

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        window = primaryStage;
        window.setTitle("thenewboston");
        button = new Button("Click Me");

        button.setOnAction(e -> AlertBox.display("Title of Window", Downloading..."));

        StackPane layout = new StackPane();
        layout.getChildren().add(button);
        Scene scene = new Scene(layout, 300, 250);
        window.setScene(scene);
        window.show();
    }


}

当您单击该按钮时,它将显示一个新场景,其中包含您要显示的消息。我使用Alert类进行了此操作。