"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como centralizo um componente no painel de conteúdo de um JFrame?

Como centralizo um componente no painel de conteúdo de um JFrame?

Publicado em 23/12/2024
Navegar:490

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

Como posso centralizar adequadamente um componente dentro de um JFrame?

Ao tentar desenhar um retângulo dentro de um JFrame, definindo o tamanho do quadro, a propriedade redimensionável e o tamanho do retângulo coordenadas podem não resultar na centralização do retângulo dentro do quadro.

A razão subjacente para essa discrepância está nas decorações do quadro, como uma borda e barra de título. Essas decorações ocupam espaço dentro da moldura, afetando o posicionamento do retângulo.

Para garantir a centralização adequada, é crucial pintar na área de conteúdo da moldura, em vez de diretamente na moldura. A área de conteúdo é essencialmente a parte interna do quadro, excluindo as decorações.

Código de exemplo:

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);
            }
        });
    }
}

Neste exemplo, a área de conteúdo do JFrame é definida para um tamanho preferencial de 800x400, enquanto o componente a ser centralizado, um JPanel, é definido para um tamanho preferencial de 700x300. Ao usar o método activate() no painel de conteúdo, o tamanho e a posição reais do componente são calculados e aplicados.

Agora, o componente deve estar corretamente centralizado dentro do JFrame, tanto horizontal quanto verticalmente.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3