2012-12-27 6 views
4

Comment puis-je obtenir la largeur et la hauteur d'un JFrame étendu? (Fait par)Taille de jframe étendu?

setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); 
+0

Uhm ce qui est erroné d'appeler 'getWidth' et 'getHeight 'après avoir mis JFrame à 'JFrame.MAXIMIZED_BOTH' –

+0

Il me donne seulement la largeur et la hauteur précédente –

Répondre

1

Après frame.setVisible(true):

double width = frame.getSize().getWidth(); 
double height = frame.getSize().getHeight(); 
1
frame.getContentPane().getSize(); 

Vous perdrez la taille de la barre de titre de la décoration. Ou obtenez le rootPane, encore mieux.

+0

Cela ne fonctionne pas, Il me donne encore la dimension de jeu précédent. –

4

Ajouter à mon commentaire:

Uhm ce qui est erroné d'appeler getWidth et getHeight après la mise en JFrame à JFrame.MAXIMIZED_BOTH

Etes-vous sûr vous l'appelez après JFrame est visible et l'état de la taille a été changé? à savoir:

frame.setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); 
frame.pack(); 
frame.setVisible(true); 

System.out.println(frame.getWidth()+" "+frame.getHeight()); 

Une autre solution est d'obtenir simplement la taille des écrans via

GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
Rectangle bounds = env.getMaximumWindowBounds(); 
System.out.println("Screen Bounds: " + bounds); 

que ce serait la taille de JFrame dans JFrame.MAXIMIZED_BOTH état

+0

+1, presque ... et si vous avez 2 moniteurs ou plus? :) -le dernier temps n'a pas fonctionné pour moi: mon cadre était seulement dans 1 moniteur –

+0

@matheszabi bonne question peut-être passer par tous les moniteurs connectés et accumuler leurs largeurs/hauteurs ferait l'affaire –

+0

Votre solution fonctionne mais il y a quelques captures à lui, comme l'a dit Matheszabi, et cela ne dépend pas de jframe aso. Eng. Fouad a donné la bonne réponse –