quarta-feira, 2 de março de 2011

Dicas de Programação: Como colocar um botão em uma posição fixa no Java (AWT/Swing)?

Essa é uma questão muito antiga, que todo mundo fala (ou se queixa, dependendo do caso...). :P
Por que diabos, quando eu faço uma tela em AWT/Swing, o Java não deixa eu colocar o botão onde eu quero?
Pois é... Ele deixa com uma dica secreta! :P
Para colocar um componente visual em qualquer parte da tela, você deve setar null no layout do componente "pai" utilizando o método setLayout, e usar o método setBound do componente "filho" para posicionar em um lugar determinado com um tamanho definido. Para entender melhor, vamos ao exemplo:

import javax.swing.JButton;
import javax.swing.JFrame;

//Classe que representa uma janela de minha aplicação
public class Exemplo1 extends JFrame {

private JButton btn = null;

//Chamado quando se dá new no objeto
public Exemplo1() {
//Tamanho da janela
this.setSize(300,300);
//Título da janela
this.setTitle("Exemplo1");
//Botão "Ok"
btn = new JButton("Ok");
//Coloca o botão na posição x=10px e y=10px da janela, com largura de 50px e altura de 30px
btn.setBounds(10, 10, 50, 30);
//Sem layout
this.getContentPane().setLayout(null);
//Adiciona o botão na janela
this.getContentPane().add(btn);
//Por default, ao clicar no X da janela, ele termina a aplicação
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}

//Método principal (onde começa a execução)
public static void main(String[] args) {
Exemplo1 exemplo1 = new Exemplo1();
exemplo1.setVisible(true);
}

}

Os dois comandos em vermelho são o que define a posição e o tamanho livre na tela.

Espero que isso facilite a vida de muita gente! :)

Até mais!

Um comentário:

Unknown disse...

Muito obrigado, me ajudou muito ! Não estava encontrando o jeito pra fazer.