Dúvida JPANEL

4 respostas
M

Boa tarde pessoas…

Possuo uma FRAME que inicia maximizando a tela e dentro dela, um JPanel adicionado por BorderLayout.NORTH.

Configurei o Layout do Panel para GridBagLayout. Na inclusão de botões, ele adiciona os botões no centro do panel sendo que eu informo para incluir no lado esquerdo.

Segue abaixo os códigos:

Frame Principal

setTitle("Controle de Condomínio"); setSize(800,600); setLocationRelativeTo(null); setVisible(true); setExtendedState(JFrame.MAXIMIZED_BOTH);

Grids e painel de botoes

gridFerramentas = new GridBagLayout(); constraintsFerramentas = new GridBagConstraints(); pFerramentas = new JPanel(gridFerramentas); pFerramentas.setBorder(javax.swing.BorderFactory.createEtchedBorder()); pFerramentas.setPreferredSize(new Dimension(this.getWidth(),59));

Mètodo para adicionar Componente ao painel de Ferramentas

public void addComponentFerramentas(Component component,int row,int column,int height,int width){ constraintsFerramentas.gridy = row; constraintsFerramentas.gridx = column; constraintsFerramentas.gridwidth = width; constraintsFerramentas.gridheight = height; gridFerramentas.setConstraints(component,constraintsFerramentas); pFerramentas.add(component); }

Chamada do método apra incluir ítens

constraintsFerramentas.fill = GridBagConstraints.NONE; constraintsFerramentas.anchor = GridBagConstraints.WEST; addComponentFerramentas(bCondominio,1,1,1,1); addComponentFerramentas(bMorador,1,2,1,1); addComponentFerramentas(bVisitante,1,3,1,1);

Adicionando o Painel de Botões na Frame principal

Pergunta: como eu faço para que os componentes do painel de ferramentas fiquem localizados à esquerda do painel e não no centro?

4 Respostas

M

Boa tarde.

Se alguém souber, favor me informar.

No Aguard.

Daniel

ViniGodoy

O jeito mais fácil é colocar um painel na direita e defini-lo para ter peso 1.
Assim ele se “estica” ocupando toda a área livre disponível e “empurrando” os demais componentes para a esquerda.

M

Obrigado pela resposta.

O que seria esse “peso 1”?

Você diz pra eu colocar um painel dentro de outro painel para fazer essa separação?

ViniGodoy

É uma das propriedades do GridBagLayout (weight). Ele indica o quanto o componente se estica.

Um valor igual a 1 indica que o componente deve esticar 100% do seu tamanho a medida que a tela esticar. 0 (padrão), indica que o componente não deve mudar de tamanho se o container que ele está mudar.

Por isso, defina um componente na direita que irá sempre ocupar toda largura disponível para ele. Ele vai empurrar os componentes que não se esticam, e afasta-los para a esquerda.

Fica muito mais fácil visualizar isso com um editor visual de códigos, como o Visual Editor.

Criado 13 de maio de 2010
Ultima resposta 2 de jul. de 2010
Respostas 4
Participantes 2