Como centralizar sempre um jLabel em um JFrame Swing?

Galera, tenho uma tela que tem um jLabel que é um texto, e esse texto altera de acordo com a classe que chama ela… eu queria centralizar sempre o texto na tela, é possível???

Vai depender do gerenciador de layout que você está usando para adicionar o JLabel no JFrame…
Tipo: se você criar um JPanel e mudar o layoutManagem dele pra flowLayout centralizado, depois
adicionar o JLabel no JPanel e na sequencia o JPanel no Frame, a bagaça vai ficar sempre centralizada…

JFrame frame = new JFrame();
JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
JLabel label = new JLabel(Meu Texto Centralizado!);

panel.add(label);
frame.add(panel, BorderLayout.NORTH);

pior que eu sempre uso layout livre… a GUI do netbeans 6.9.1 sempre ajuda a deixar alinhado…

não teria algum método que pega-se o tamanho da tela e pega-se o tamanho do jLabel e fizesse umas contas doidas pra alinhar?, pelo menos sabe em qual comando eu posso mandar colocar com precisão o JLabel… exemplo… jLabel.setPosition(100,220); posição x 100 e y 200… assim eu mesmo inventaria a conta

[quote=vitorkgb]pior que eu sempre uso layout livre… a GUI do netbeans 6.9.1 sempre ajuda a deixar alinhado…

não teria algum método que pega-se o tamanho da tela e pega-se o tamanho do jLabel e fizesse umas contas doidas pra alinhar?, pelo menos sabe em qual comando eu posso mandar colocar com precisão o JLabel… exemplo… jLabel.setPosition(100,220); posição x 100 e y 200… assim eu mesmo inventaria a conta[/quote]

Pra que facilitar se dá para complicar, não é mesmo?
Coloque apenas um único painel com o FlowLayout que o colega indicou.

Outra possibilidade é colocar um JLabel com o tamanho de toda a extensão do JFrame, e então definir o horizontal aligment para CENTER.

Espero que por layout livre você esteja se referindo ao GroupLayout (padrão do Matisse) e não ao Null Layout (layout que não é multiplataforma e que usa o comando setBounds).

1 curtida