Maison >Java >javaDidacticiel >Comment centrer un composant dans le volet de contenu d'un JFrame ?
Lorsque vous essayez de dessiner un rectangle dans un JFrame, définissez la taille du cadre, la propriété redimensionnable et le rectangle les coordonnées peuvent ne pas avoir pour résultat que le rectangle soit centré dans le cadre.
La raison sous-jacente de cet écart réside dans le cadre. décorations, comme une bordure et une barre de titre. Ces décorations occupent de l'espace à l'intérieur du cadre, affectant le positionnement du rectangle.
Pour assurer un bon centrage, il est crucial de peindre sur la zone de contenu du cadre plutôt que directement sur le cadre. La zone de contenu est essentiellement la partie intérieure du cadre, à l'exclusion des décorations.
Exemple de code :
public class CenteredRectangle { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { } // Create a JFrame with a content pane JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setPreferredSize(new Dimension(800, 400)); frame.pack(); // Create a component to be centered JPanel panel = new JPanel(); panel.setBackground(Color.RED); panel.setPreferredSize(new Dimension(700, 300)); // Add the component to the content pane frame.getContentPane().add(panel); frame.validate(); // Position the frame at the center of the screen frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
Dans cet exemple, la zone de contenu du JFrame est définie à une taille préférée de 800x400, tandis que le composant à centrer, un JPanel, est défini sur une taille préférée de 700x300. En utilisant la méthode validate() dans le volet de contenu, la taille et la position réelles du composant sont calculées et appliquées.
Maintenant, le composant doit être correctement centré dans le JFrame, à la fois horizontalement et verticalement.
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!