Maison > Java > javaDidacticiel > Comment centrer avec précision un JFrame redimensionnable et détecter les collisions avec ses bords ?

Comment centrer avec précision un JFrame redimensionnable et détecter les collisions avec ses bords ?

DDD
Libérer: 2024-12-04 09:29:11
original
716 Les gens l'ont consulté

How to Accurately Center a Resizable JFrame and Detect Collisions with its Edges?

Résoudre le positionnement exact du centre dans un JFrame redimensionnable

Votre requête présente deux défis : une détection précise des collisions avec les bords du cadre et la détermination du centre exact, quelle que soit la taille de l'écran.

Détection de collision Correction

Le décalage de 10 pixels observé lors de la détection de collision provient probablement d'une mauvaise compréhension des dimensions du cadre. Un JFrame comprend une bordure, un JRootPane et d'autres composants autour du volet de contenu réel. Par conséquent, vous devez ajuster vos calculs pour tenir compte de la largeur et de la hauteur de la bordure.

Pour obtenir la région exacte à peindre, utilisez la formule :

Width - border.width
Height - border.height
Copier après la connexion

Détermination exacte du centre de l'écran

Pour trouver le centre exact de l'écran, considérez le suivants :

  • Perspective du cadre :Le centre est à (100 x 100) en fonction des dimensions du cadre.
  • Perspective du volet de contenu :Le le centre est à (92 x 81) en fonction de la valeur du volet de contenu. dimensions.

Le choix de la valeur à utiliser dépend de votre objectif :

  • Pour positionner le cadre, utilisez le point central du cadre.
  • Pour peinture, utilisez le point central du volet de contenu.

Méthode de centrage du Cadre

Pour centrer facilement le cadre sur l'écran, appelez Window#setLocationRelativeTo(null).

Vous pouvez également utiliser la formule suivante :

JFrame frame = ...;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screenSize.width - frame.getWidth()) / 2;
int y = (screenSize.height - frame.getHeight()) / 2;
frame.setLocation(x, y);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal