Trouver de “vrais” hauteur/largeur de Swing/AWT objet
Parce que Canvas3D n'a pas la possibilité de redimensionner dynamiquement avec l'image parent, je voudrais être en mesure de suivre lorsqu'un utilisateur redimensionne une fenêtre, puis la redimensionner manuellement moi-même. (Si cela finit par s'écraser Canvas3D, comme certains docs suggèrent, je vais tout simplement la détruire et recréer lorsque l'utilisateur redimensionne la fenêtre). Le cadre de cette procédure implique d'être capable de dire avec exactitude comment big le conteneur panel est de commencer avec.
Les deux méthodes que j'ai essayé:
panneau.getHeight(); le panneau.getPreferredSize().hauteur;
Ne semblent pas exactement le rapport des choses: getHeight()
est toujours zéro, et getPreferredSize()
renvoie les nombres qui ne sont pas en réalité rien à voir avec la taille réelle de l'écran.
Des idées?
Modifier: Oui, j'ai pris un débogueur sur le panneau à l'objet et à la main inspecté le non-propriétés de l'objet et je n'ai rien vu qui ressemblait à de la largeur/hauteur. Certes, il y sont des sous-objets que je ne regarde pas. Aussi, peut-être que la fenêtre doit être visible (il n'est pas, au point où j'en suis de l'interfaçage de l'objet) quand j'ai une requête pour hauteur/objet?
Edit 2: Donc, Swing classes sont des sous-classes des classes AWT, donc j'imagine que si vous êtes en mesure de trouver la hauteur/largeur de ceux-ci, l'approche serait de généraliser. J'ai modifié le titre en conséquence.
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
Pour déterminer la taille d'un composant, vous devez soit:
Généralement, vous obtenez exactement la taille d'un composant via la getSize (), qui retourne un objet de Dimension contenant la largeur et la hauteur, mais getWidth/Height() devrait fonctionner aussi. Mais cela ne peut fonctionner que, si l'une des deux conditions préalables sont réunies. Si une fenêtre n'a jamais été rendu visible, n'a pas de gestionnaire de mise en page ou le composant (vous voulez savoir la taille de l') a été ajouté après la fenêtre/le conteneur a été rendue visible, la taille est généralement de zéro.
Donc, pour obtenir la taille correcte, vous devez faire en sorte de conteneur/l'image visible (après avoir ajouté le composant) ou appelez le valider() ou doLayout() sur le conteneur pour recalculer la mise en page, si vous avez ajouté le composant après la dernière mise en page a été faite. Une autre chose à garder à l'esprit est le réglage et probablement de la configuration d'un gestionnaire de présentation sur le conteneur. Si aucun gestionnaire de présentation de l'ist set (null), en en faisant même un conteneur visible oder appel valider() ne permet pas de définir une taille de ses enfants.
La minimumSize/preferredSize/maximumSize propriétés sont les allusions à la disposition du gestionnaire, comment le composant en question doit être de taille moyenne, mais il n'a pas à leur obéir (la plupart des gestionnaires de disposition n'avez pas).
Edit 2: Après que j'ai lu votre autre question sur le même sujet, je pense que vous devriez lire À L'Aide De Gestionnaires De Disposition de La Java des Tutoriels
Edit: je ne sais pas si vous l'avez déjà compris, mais de réagir à le redimensionnement de la fenêtre, vous pouvez faire quelque chose comme ceci:
OriginalL'auteur Simon Lehmann
J'ai découvert que si vous étendez par JFrame, ce code peut être utilisé également pour gagner du temps, de l'effort et de l'espace.
Je sais que vous avez déjà eu une réponse, mais si jamais vous avez besoin d'une alternative, c'est ici.
OriginalL'auteur