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.
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