Posição dos objetos(botões, campos, labels)

6 respostas
israelwm

OI não tem outra maneira de posicionar os botões na janela? Só esse tal de GridLayout, BorderLayout entre outros, naum tem um jeito do tipo:

botaolegal.top = 13; //ou botaolegal.x
botaolegal.left = 100; //ou botaolegal.y

ei sei que tem alguma coisa assim mas é o tal do grid que na verdade move como se fosse uma tabela, naum tem movimentação via pixel mesmo?

Aaa tio Delphi que saudades, // button1.left := 10;

Valeuz feras…

6 Respostas

D

Tem o método setBounds(Rectangle) ou setBounds(int, int, int, int).
Mas se vc quer uma sugestão, separe um tempo (de qualidade) para estudar os gerenciadores de layout. Eles são extremamente úteis e vc deveria usá-los em seus projetos.

Existem gerenciadores mais intuitivos e fáceis de usar do que o GridBagLayout, que é bem complexo. Entre eles estão o FormLayout (JGoodies) e o TableLayout (google neles).

Interfaces “presas” tendem a enlouquecer o usuário (eu fico p* da vida sempre que eu preciso modificar variáveis de ambiente no windows…; aquela janelinha minúscula me dá ódio).

israelwm

Bom isso é verdade, eles organizam bem mais rápido, bem melhor do q na mão, vou seguir teu conselho.

Por acaso esse JGoodies já vem com o java ou tem q baixar e tal?

(sou meio leigo ainda em java)

keller

Olá, sim o JGoodies você tem que fazer download. [google!]

E sobre posicionar os objetos como no Delphi.
Você tem que usar o Layout null
Como os componentes não trocarão de lugar se você redimensionar
a tela, então não tem o porque de deixa-la redimensionavel então…

meuJFrame.setLayout(null);
meuJFrame.setResizable(false);

Agora para posicionar os objetos você usa o setBounds()
eixo X [int]
eixo Y [int]
tamanho X [int]
tamanho Y [int]

meuJLabel.setBounds(ex,ey,tx,ty);
meuJFrame.getContenPane().add(meuJLabel);

Valeu? até mais… :wink:

israelwm

Ahhh, então tem como fazer isso sem usar uma implementação como o Jgoodies. Ótimo, mas a última pergunta, é aconselhável ou é recomendável usar os layout padrões?

D

É bom que vc saiba usar os LM que vêm com o JDK. Alguns deles vc tem que saber usar tais como BoxLayout e BorderLayout pq são muito práticos e são uma mão-na-roda. O GridBagLayout (como já disse) é muito confuso (IMHO) e pode ser substituído sem problemas pelo TableLayout.

Você deveria conhecer também a classe javax.swing.Box que oferece métodos para criar componentes invisíveis para espaçamento, junção e união.

Procure no google por “JGoodies FormLayout” e por “TableLayout”. Faça o download deles e dos javadocs (o JGoodies vem com um whitepaper e vários tutoriais introdutórios e é um LM que vale a pena ser conhecido – pode parecer complexo no começo mas é surpreendentemente intuitivo, se comparado com o GridBagLayout – IMHO).

O TableLayout é “uma festa”. Ele lembra o modelo de arranjo de componentes do Thinlet que é bem legal e simples de usar.

israelwm

É mesmo, o BorderLayout por exemplo me lembrou o alinhamento que o Delphi tem, na verdade acho que é possível fazer qualquer tipo de layout (com um pouco de esforço ehhehe) e depois é só usar os Painéis…

Criado 29 de março de 2005
Ultima resposta 30 de mar. de 2005
Respostas 6
Participantes 3