Positionnement d'un rectangle centré dans un cadre Java
En Java, lorsque vous tentez de dessiner un rectangle dans un cadre, vous assurer que son placement central peut être un défi. Malgré la définition de valeurs spécifiques de x, y, de largeur et de hauteur, le rectangle peut apparaître décalé. Pour résoudre ce problème, il est crucial de comprendre les éléments de décoration du cadre.
Le problème avec les décorations du cadre
Les cadres incluent généralement des décorations telles qu'une bordure et une barre de titre, qui occuper l'espace à l'intérieur des limites du cadre. Par conséquent, peindre directement sur le cadre, au lieu de sa zone de contenu, peut donner l'impression que le rectangle est positionné trop haut.
Solution : peindre sur la zone de contenu du cadre
Pour centrer correctement le rectangulaire, concentrez-vous sur la peinture sur la zone de contenu du cadre, en excluant essentiellement les décorations. La zone de contenu est la région désignée pour le placement des composants, offrant un point de référence cohérent et précis pour le positionnement.
Exemple d'implémentation
Le code suivant montre comment positionner correctement un rectangulaire au centre d'un cadre, s'adaptant aux décorations du cadre :
import javax.swing.*; import java.awt.*; public class CenteredRectangle extends JFrame { public static void main(String[] args) { new CenteredRectangle(); } public CenteredRectangle() { setDefaultCloseOperation(EXIT_ON_CLOSE); // Set the content pane's preferred size setContentPane(new PaintablePanel()); pack(); // Center the frame on the screen setLocationRelativeTo(null); // Make the frame visible setVisible(true); } public class PaintablePanel extends JPanel { @Override public Dimension getPreferredSize() { return new Dimension(800, 400); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); // Draw the rectangle centered within the content area paintRectangle(g); } private void paintRectangle(Graphics g) { g.setColor(Color.RED); int x = (getWidth() - 700) / 2; int y = (getHeight() - 300) / 2; g.drawRect(x, y, 700, 300); } } }
Dans cet exemple, un nouveau panneau est créé et défini comme contenu du cadre volet. Le panneau fournit la zone dédiée au dessin des composants. La méthode getPreferredSize() garantit que le panneau a une taille préférée spécifique, tandis que la méthode paintComponent() est remplacée pour personnaliser le comportement du dessin. La méthode paintRectangle() calcule ensuite le décalage approprié en fonction des dimensions de la zone de contenu, ce qui donne un rectangle centré.
En utilisant la zone de contenu du cadre et en ajustant les décorations du cadre, cette approche positionne avec précision le rectangulaire dans la zone souhaitée. emplacement.
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!