"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo centro un componente dentro del panel de contenido de un JFrame?

¿Cómo centro un componente dentro del panel de contenido de un JFrame?

Publicado el 2024-12-23
Navegar:126

How Do I Center a Component within a JFrame's Content Pane?

¿Cómo puedo centrar correctamente un componente dentro de un JFrame?

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.

Último tutorial Más>

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