Je veux ouvrir une fenêtre de dialogue au-dessus du centre de la fenêtre parent, donc j'utiliser la formule suivante:JavaFX-2: comment obtenir la taille de la fenêtre si elle n'a pas été définie manuellement?
Window window = ((Node) actionEvent.getSource()).getScene().getWindow();
Scene scene = new Scene(new Group(new DialogWindow()));
Stage dialog = new Stage();
dialog.initOwner(window);
dialog.sizeToScene();
dialog.setX(stage.getX() + stage.getWidth()/2 - dialog.getWidth()/2); //dialog.getWidth() = NaN
dialog.setY(stage.getY() + stage.getHeight()/2 - dialog.getHeight()/2); //dialog.getHeight() = NaN
dialog.setScene(scene);
dialog.show(); //it is better to showAndWait();
Je ne taille fixe pas la main parce que je besoin de la fenêtre pour dimensionner automatiquement à la taille de son contenu. Sous Linux, il positionne la fenêtre directement au centre de la fenêtre parente. Mais dans Windows cela ne fonctionne pas et conduit à des résultats différents.
Comment puis-je obtenir la largeur et la hauteur de la boîte de dialogue si je ne les ai pas définies manuellement?
Il fonctionne. Mais pour seulement 'show()'. Pour 'showAndWait()' il y a un problème, si la fenêtre principale a été déplacée. Si je le déplace, la boîte de dialogue apparaîtra toujours au centre de l'écran. Quoi qu'il en soit merci pour une telle solution et je vais continuer à chercher une solution pour 'showAndWait()' :) – Dragon
@Dragon, s'il vous plaît voir mise à jour. –
Merci beaucoup. Cela fonctionne vraiment bien. – Dragon