2つのボタンオプションでコンピュータをサスペンドするかどうかを尋ねるウィンドウを表示するアプリケーションをビルドします。その1つがYESで、PCがサスペンドします。hideとshowのJavaFXステージの問題
"Later"という名前のもう1つのボタンは、ウィンドウを非表示にし、1時間後に再び表示され、同じ質問をします。
コード「以降のbuttton」
noButton.setOnAction(event -> {
Done=false; //boolean to close and open the frame
Gui gui = new Gui();
try {
gui.start(classStage);
} catch (Exception e) {
e.printStackTrace();
}
});
あなたがコードで表示さboolean型は、それは私がそれを制御することができると思う方法だったBC、私はさまざまな方法で試みたが、誰もちょうど私を信頼しているため問題を手伝ってください。ここにGUIクラスのコードがあります。
public class Gui extends Application {
public Stage classStage = new Stage();
public static boolean Done=true;
public static boolean flag=true;
public Gui() {
}
@Override
public void start(Stage primaryStage) throws Exception {
Done = Controller.isDone();
classStage = primaryStage;
Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
primaryStage.setX(primaryScreenBounds.getMaxX() - primaryScreenBounds.getWidth());
primaryStage.setY(primaryScreenBounds.getMaxY() - primaryScreenBounds.getHeight());
primaryStage.setAlwaysOnTop(true);
Parent root = FXMLLoader.load(getClass().getResource("MainWindow.fxml"));
primaryStage.setTitle("Alerta suspencion de equipo");
primaryStage.setScene(new Scene(root));
primaryStage.setResizable(false);
primaryStage.initStyle(StageStyle.UNDECORATED);
if (Controller.isDone() == true) {
primaryStage.show();
} else if(Controller.isDone() == false) {
primaryStage.hide();
Platform.exit(); // this is the only way that the windows close
}
}
私はPlatform.exit()をよく知っています。プログラムを殺しますが、私は.hide()を使うだけです。何も起こらず、ウィンドウは決して閉じられませんでした。最悪の部分は、私がPlatform.exit()コマンドを使用すると、フレームが再び表示されることがないということです...
誰でも簡単に隠して表示する方法がわかりますある時間の後の窓?多分私はこれを間違っている。
よろしくお願いいたします。
「スレッド」または「一時停止」を使用できます。 2番目の方法が推奨されます。 – GOXR3PLUS
なぜ 'Application'サブクラスをインスタンス化していますか? JavaFXアプリケーションがすでに実行されているので、おそらく別の 'Application'サブクラスをすでに持っているでしょう。 JavaFXプログラムには1つの 'Application'インスタンスしか存在しません.FXアプリケーションを起動すると、あなたのために作成されたインスタンスでなければなりません。 –
'classStage.hide()'がうまくいかない理由は明らかではありません。あなたが投稿したコードとは無関係です。問題を再現する[MCVE]を作成し、質問を組み込むために質問を編集します。あなたが記述した機能(2つのボタンなど)を使って、数十行のコードで完全な例を書くことができます。ここでの質問は、許容範囲内です。 –