2017-11-21 8 views
2

をクリックした後、私は特定のファイルの新しいバージョンが利用可能であるかどうかを確認するJavaデスクトップアプリを持っており、それをダウンロードするようにユーザーに尋ねます。ユーザーが「はい」をクリックすると、質問は表示されたままになり、「ダウンロードしてください、お待ちください」というメッセージは表示されません。しかし、私は...JavaFXの変更シーンボタン

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(); 
} 

は、私は、新しいシーンを(ダウンロードが開始される前に)ダウンロード方法の内側に新しいシーンを作成して、電流を隠そうとしたが、うまくいかなかったことをやるのか分かりませんダウンロードが完了すると点滅するだけです。

は何これを行うための最善のaproachでしょうか?私はシーンがどのように動作するか分かりません。

答えて

2

このジョブに情報ダイアログを使用できます。 JavaFXは、この目的のためにAlertクラスを提供しています。下記のようなものがあなたの場合に役立つかもしれません:

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

    alert.showAndWait(); 
} 

上記の方法は、ダウンロードボタンハンドラに含めることができます。

Alertクラスに関する詳細はOracle's documentationにあります。
上記のコードは、ボタンをクリックすると、それはshow.Iにしたいメッセージを持つ新しいシーンが表示されます

+0

。 – FranAguiar

+1

これは問題ではありません。ダウンロードを開始するには数秒後にこのダイアログを閉じることができます。 –

+0

私はその動作が正しいことを知っていますが、私の目的のためにはうまくいかず、私はユーザにとって使いやすいものでなければならず、そのダイアログは彼らを混乱させます。 何かが起こっていることを知らせたいだけです。座って待ってください。 – FranAguiar

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クラスでそれをやりました。ユーザーが受け入れるまで、ダイアログ遺骨を開いて、それを受け入れない場合は、ダウンロードが開始されていないことを

+1

AlertBoxとは何ですか?あなたはそれをインポートしておらず、JavaやJavaFXの一部ではありません。このコードはコンパイルされません。あなた自身の 'AlertBox'クラスを作成しましたか?その場合は、そのコードをここに含める必要があります。 –

関連する問題