2015-03-03 1 views
0

J'ai deux bonnes fenêtres de travail (fenêtre principale, première fenêtre) dans des fichiers .java séparés, dans le même paquet.JAVAFX - Windows droits appelant

Le programme gère, si j'appelle la première fenêtre (à partir de la principale), le principal reste en arrière-plan. Le seul problème est que je peux toujours utiliser la fenêtre principale si je clique là-bas, et créer des premières fenêtres à l'infini.

Une solution consiste à fermer la fenêtre principale, pour éviter de cliquer à nouveau là-dessus, mais je voudrais rester là. Afin de faire la solution j'ai besoin d'un code qui rend la fenêtre d'arrière-plan en quelque sorte désactivé jusqu'à ce que je clique quelque chose dans la première fenêtre. Mais pour ce faire, je dois donner les droits au "handler.java" pour fonctionner avec le principal.

Quelqu'un a une idée de comment faire cela?

Permettez-moi de vous montrer les deux méthodes de fichier java:

Main.java:

public class program extends Application { 

@Override 
public void start(Stage main) throws Exception { 
    Parent root = FXMLLoader.load(getClass().getResource("mainwindow.fxml")); 
    Scene scene = new Scene(root); 

    main.setScene(scene); 
    main.setTitle("Main); 
    main.setWidth(800); 
    main.setHeight(600); 
    main.setResizable(false); 

      main.show(); 

First.java

public void first() throws Exception { 
    Parent root = FXMLLoader.load(getClass().getResource("first.fxml")); 
    Scene scene = new Scene(root); 
    Stage first = new Stage();  
    first.setScene (scene); 
    first.setTitle("Köszöntjük az Útiokosban!"); 
    first.setWidth(400); 
    first.setHeight(200); 
    first.setResizable(false); 

      first.show(); 

} 
+0

Avez-vous pensé à faire votre première fenêtre une boîte de dialogue modale? – omgBob

+0

Est-il difficile de le changer en modal? Pourquoi serait-ce mieux pour moi? –

+0

Les boîtes de dialogue modales empêchent tout accès à la scène parent, tandis que la boîte de dialogue est ouverte. Vous pouvez également faire en sorte que votre boîte de dialogue empêche tout accès à toutes les autres fenêtres de votre application. – omgBob

Répondre

2

Utilisez Stage.initModality pour faire un de vos Stage de la modal (blocage).

Remarque: Vous devez définir la modalité avant d'afficher le Stage.

+0

Merci pour votre aide! Si je pouvais donner 2 "bonne réponse", je donnerais l'autre. –