Cuando intento dibujar un rectángulo dentro de un JFrame, establezco el tamaño del marco, la propiedad redimensionable y el tamaño del rectángulo. Es posible que las coordenadas no den como resultado que el rectángulo quede centrado dentro del marco.
La razón subyacente de esta discrepancia radica en las decoraciones del marco, como un borde y barra de título. Estas decoraciones ocupan espacio dentro del marco, lo que afecta la posición del rectángulo.
Para garantizar un centrado adecuado, es crucial pintar sobre el área de contenido del marco en lugar de hacerlo directamente sobre el marco. El área de contenido es esencialmente la parte interior del marco, excluyendo las decoraciones.
Código de ejemplo:
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); } }); } }
En este ejemplo, el área de contenido del JFrame se establece en un tamaño preferido de 800x400, mientras que el componente a centrar, un JPanel, se establece en un tamaño preferido de 700x300. Al utilizar el método validar() en el panel de contenido, se calculan y aplican el tamaño y la posición reales del componente.
Ahora, el componente debe estar correctamente centrado dentro del JFrame, tanto horizontal como verticalmente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3