2017-04-19 3 views
0

J'essaie de fermer la fenêtre contextuelle par bouton, mais je n'ai aucune idée. Quand j'ai utilisé Java Swing, je me souviens que la fonction était automatique ...Comment fermer la fenêtre contextuelle par bouton dans javafx

Alors .. Que dois-je faire?

Et je veux aussi faire plus d'espace entre le bouton et le texte. Si vous avez une idée, aidez-moi s'il vous plaît.

    Stage dialogStage = new Stage(); 
        dialogStage.initModality(Modality.WINDOW_MODAL); 

        Button button = new Button(); 
        button.setOnKeyPressed(new EventHandler<KeyEvent>() { 
         @Override 
         public void handle(KeyEvent event) { 
          if (event.getCode() == KeyCode.ENTER) { 


          } 
         } 
        }); 

        VBox vbox = new VBox(new Text("Wrong ID & PW!!"), new Button("Ok.")); 
        vbox.setAlignment(Pos.CENTER); 
        vbox.setPadding(new Insets(15)); 

        dialogStage.setScene(new Scene(vbox)); 
        dialogStage.show(); 

Répondre

1

Appel dialogStage.close()

button.setOnKeyPressed(new EventHandler<KeyEvent>() { 
        @Override 
        public void handle(KeyEvent event) { 
         if (event.getCode() == KeyCode.ENTER) { 
          dialogStage.close(); 
         } 
        } 
       }); 

Aussi, vous ajoutez un new Button("Ok.") au VBox ce qui est faux, ajoutez le button que vous avez créé avant

En ce qui concerne l'espace entre le bouton et le texte, cela devrait fonctionner

VBox.setMargin(text, new Insets(20)); 
VBox.setMargin(button, new Insets(20)); 
+0

mais je pense que je dois régler le contrôleur ,, il ne fonctionne pas TT –

+0

Le problème est avec votre 'bouton' vous créez le bouton et l'ajout d'un écouteur, mais vous ajoutez un nouveau bouton à la' VBox' – Oswald

+0

Dans l'exemple de code de la question il n'utilise jamais le bouton nommé 'button'. Au lieu de 'Button button = new Button();', écrivez 'Button button = new Button (" OK ");'. Au lieu de 'new Button (" Ok. ")' Dans le constructeur de la VBox, juste référence 'button'. Utilisez 'button.setDefault (true)' au lieu d'enregistrer un gestionnaire de touches pour le bouton. Utilisez 'button.setOnAction' pour déclencher le gestionnaire d'événement close. Pensez à utiliser ['Alert'] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Alert.html) au lieu de créer votre propre boîte de dialogue. – jewelsea