Im construire une application qui montre une fenêtre qui demande à l'utilisateur s'il veut suspendre l'ordinateur avec deux options de bouton, l'un d'eux est un OUI et le PC suspend.JavaFX stade problème avec cacher et afficher
L'autre bouton nommé "Plus tard" censé cacher la fenêtre et après une heure il apparaît à nouveau et poser la même question.
Code pour la « plus tard 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();
}
});
Le booléen que vous voyez dans le code est bc c'était la façon dont je pense que je pouvais contrôler que, croyez-moi j'ai essayé de différentes manières, mais personne ne vient aidez-moi avec le problème, voici le code de la classe 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
}
}
Je sais que Platform.exit(); tue le programme mais quand je n'utilise que .hide(); de la scène rien ne se passe, la fenêtre ne se ferme jamais, le pire est que quand j'utilise la commande Platform.exit() je ne peux pas faire apparaître le cadre à nouveau ...
Tout le monde connaît un moyen peut-être plus facile de cacher et de montrer une fenêtre après un certain temps? peut-être que je fais ça mal.
Cordialement.
Vous pouvez utiliser un 'Thread' ou une' PauseTransition'. Le second est recommandé. – GOXR3PLUS
Pourquoi instanciez-vous une sous-classe 'Application'? Vous avez probablement déjà une autre sous-classe 'Application', puisque votre application JavaFX est déjà en cours d'exécution. Vous ne devriez avoir qu'une seule instance 'Application' dans un programme JavaFX, et elle devrait être celle créée pour vous lorsque vous lancez l'application FX. –
Il n'est pas clair pourquoi 'classStage.hide()' ne fonctionne pas: cela n'a rien à voir avec le code que vous avez publié. Créez un [MCVE] qui reproduit le problème et [modifier] votre question pour l'inclure. Vous devriez être capable d'écrire un exemple complet avec la fonctionnalité que vous avez décrite (deux boutons, etc) dans seulement quelques douzaines de lignes de code, ce qui est bien dans les limites acceptables pour une question ici. –