我有一个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();
}
我尝试在下载方法中创建一个新场景(在下载开始之前)并隐藏当前但不起作用,新场景仅在下载完成时闪烁。
这样做最好的方法是什么?我想我很想念场景是如何运作的
答案 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类进行了此操作。