Pourquoi la méthode JFrame setSize () ne définit-elle pas correctement la taille?
J'ai donc été à la programmation en java pour un semestre ou deux, et j'ai eu ce problème plusieurs fois et me demandai.
Si je fais une JFrame
et puis définissez la taille, comme setSize(400,800)
par exemple. Le cadre n'est pas réellement 800 pixels
de long. À partir de ce que je peux dire c'est en fait plus comme 770 (or maybe 769) pixels
de long. Aussi, si vous définissez la taille verticale très faible (en dessous de 30), l'image ne s'affiche même pas, seulement le haut de la fenêtre de la barre de l'OS et le cadre n'a pas de grossir jusqu'à ce que vous allez à une valeur de plus de 30 (donc setSize(400,0)
a la même apparence que setSize(400,20)
). Pourquoi est-ce, il n'est pas difficile à fixer, mais le son bizarre et je suis curieux de savoir pourquoi il en est?
Si vous avez besoin de plus d'informations à propos de quelque chose il suffit de demander et je vais vous le faire parvenir.
source d'informationauteur convergedtarkus
Vous devez vous connecter pour publier un commentaire.
C'est probablement parce que la taille d'un bloc inclut la taille de la frontière.
Source:
http://download.oracle.com/javase/tutorial/uiswing/components/frame.html
JFrame SetSize() contient le + de la Frontière.
Je pense que vous devez définir la taille de
ContentPane
deDonc je vous conseille d'utiliser un Composite intégré dans une JFrame et de vous appuyer sur un Composite. Cela pourrait réduire votre problème.
Je suis à la lecture de ce de Javadoc
Il y a beaucoup de bonnes raisons pour le réglage de la taille d'une image. L'un est de se rappeler la dernière taille de l'ensemble d'utilisateurs, et de restaurer ces paramètres. J'ai ce code qui semble fonctionner pour moi:
}
Sur OS X, vous avez besoin de prendre en compte des décorations de fenêtre. Ils ajoutent 22 pixels pour la hauteur. Ainsi, sur une JFrame, vous devez indiquer au programme de cette:
Je sais que cette question est d'environ 6 ans, mais la réponse par @Kyle ne fonctionne pas.
À l'aide de cette
Mais c'est toujours travailler dans n'importe quelle taille:
Si vous ne voulez pas de frontière à frontière, et que vous souhaitez uniquement la zone blanche, ici:
Aussi cela ne fonctionne que sur Windows 10, pour les utilisateurs de MacOS, utilisez @ben la réponse.
De la frontière supérieure de l'image est de taille 30.Vous pouvez écrire du code pour imprimer les coordonnées de tout point sur le cadre à l'aide de MouseInputAdapter.Vous trouverez lorsque le curseur se trouve juste en dessous de la bordure supérieure de l'image de la coordonnée y est pas zéro , son proche de 30.Donc, si vous donnez la taille de l'image 300 * 300 , la taille disponible pour placer les composants sur le châssis est à seulement 300 * 270.Donc, si vous avez besoin d'avoir la taille 300 * 300 ,donner 300 * 330 taille de l'image.