Maison > Java > javaDidacticiel > Comment centrer correctement un rectangle dans un cadre Java non redimensionnable ?

Comment centrer correctement un rectangle dans un cadre Java non redimensionnable ?

Linda Hamilton
Libérer: 2024-12-05 04:51:14
original
893 Les gens l'ont consulté

How to Properly Center a Rectangle within a Non-resizable Java Frame?

Comment centrer un rectangle dans un cadre Java

Problème :

En Java, vous avez créé un cadre rectangulaire avec une taille fixe de (800, 400) et l'avez défini comme non redimensionnable. Le rectangle, dessiné avec les coordonnées (50, 50, 700, 300), apparaît légèrement décentré vers le haut du cadre.

Réponse :

Le problème réside dans le fait que les cadres ont des décorations inhérentes (bordure et barre de titre) qui consomment de l'espace dans la zone du cadre. Lorsque vous peignez directement sur la surface d'un cadre, comme supposé dans ce cas, ces décorations peuvent déplacer le centre perçu du cadre.

Pour peindre le rectangle au véritable centre du cadre, vous devez le restituer sur le cadre. zone de contenu. Cette zone exclut les décorations et représente la surface disponible pour la peinture.

Démonstration :

Dans l'exemple de code Java fourni :

  • BadFrame : Ce cadre remplace la méthode paint() et dessine le rectangle directement sur le cadre lui-même. Il présente le problème de décentrement.
  • PaintablePane : Un sous-conteneur qui sert de zone de contenu pour le goodFrame. Il remplace les méthodes getPreferredSize() et paintComponent() pour définir la taille de la zone de contenu et dessiner le rectangle correctement.

Le goodFrame utilise ensuite le PaintablePane comme volet de contenu, garantissant que toutes les peintures se produisent dans la zone désignée. Les décorations du cadre sont désormais considérées comme extérieures à la zone de peinture, et le rectangle est centré comme prévu.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal