Dúvida com GridBagLayout

4 respostas
tiagomac

Olá Pessoal,

Então, to com um probleminha aqui enquanto escrevo um programa. acontece que gostaria de ter ele feito em gridbaglayout, e o resultado que eu gostaria de obter é mais ou menos esse ai:

porem, com o seguinte código (em grid bag layout):

private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new GridBagLayout()); GridBagConstraints gBC = new GridBagConstraints(); gBC.weightx = 1.0; gBC.weighty = 1.0; gBC.fill = GridBagConstraints.HORIZONTAL; gBC.gridy = 0; gBC.gridx = 0; gBC.ipady = 3; gBC.gridwidth = 5; jContentPane.add(getJScrollPane_msgs(), gBC); gBC.ipadx = 1; gBC.gridx = 0; gBC.gridy = 1; jContentPane.add(getJButton_font(), gBC); gBC.gridx = 1; gBC.gridy = 1; jContentPane.add(getJButton_arquivo(), gBC); gBC.gridx = 2; gBC.gridy = 1; jContentPane.add(getJButton_foto(), gBC); gBC.gridx = 3; gBC.gridy = 1; jContentPane.add(getJButton_color(), gBC); gBC.gridx = 4; gBC.gridy = 1; jContentPane.add(getJButton_url(), gBC); gBC.gridheight = 2; gBC.gridwidth = 4; gBC.gridx = 0; gBC.gridy = 2; gBC.weighty = 1.0; jContentPane.add(getJScrollPane_msgEnv(), gBC); gBC.gridx = 4; gBC.gridy = 2; gBC.weighty = 1.0; jContentPane.add(getJButton_enviar(), gBC); gBC.gridx = 4; gBC.gridy = 3; gBC.weighty = 1.0; jContentPane.add(getJButton_away(), gBC); } return jContentPane; }

eu só to conseguindo obter esse resultado:

no caso da primeira imagem eu fiz a interface utilizando posição absoluta pelo Visual Editor, gostaria de saber como obter o mesmo resultado utilizando o gridbaglayout no caso eu sei que to errando em algo no código, dai se alguém tiver experiência c/ esse layout e poder dar uma ajudinha, serei muito grato… vlw, e forte abraço.

4 Respostas

tiagomac

Resolvido!!!

achei um site muito bom que fala muito bem acerca do gridbaglayout, interessante para quem quiser aprender, dê uma olhada: http://java.sun.com/developer/JDCTechTips/2004/tt0727.html

o resultado ficou assim:

ainda tem coisas para melhorar, mas o resultado fica realmente bom, o resize automatico dos componentes foi o que eu achei de melhor :)!

abraços.

kaoe

Realmente utilizar o GridBagLayout da trabalho mais é a forma que gosto mais. No seu caso você esta tentando criar um layout mais detalhado usando um único panel, não há como (que eu saiba) com o gridbag, então você terá que criar 3 paineis colocando um na primeira linha do layout para o texto um no meio para os botões e um embaixo, ai você detalha mais em cada um destes paineis.

tiagomac

kaoe:

Realmente utilizar o GridBagLayout da trabalho mais é a forma que gosto mais. No seu caso você esta tentando criar um layout mais detalhado usando um único panel, não há como (que eu saiba) com o gridbag, então você terá que criar 3 paineis colocando um na primeira linha do layout para o texto um no meio para os botões e um embaixo, ai você detalha mais em cada um destes paineis.

Opa Kaoe, td bom?
então fera, eu utilizei um único JPanel nesse caso, e uma nova instância do gridbaglayout como referência. O bacana é que o construtor dele já recebe todos os parâmetros necessários (conforme o exemplo que tem no link)… eu fiquei meio redundante quanto a utilizar dessa forma, pois ele me parece criar um novo objeto para cada componente, mas ao mesmo tempo se a própria sun fez assim no tutorial então não deve haver problema né…

eu to pensando agora em utilizar mais 2 JPanel para criar bordas c/ título, apenas para colocar uma msg avisando o campo p/ enviar msgs, outro onde fica o histórico e os botões, vou pensar nisso com mais calma quando já tiver tudo quase pronto… eu acho que será mais difícil utilizando mais jPanels, mas deus ajuda q eu chego lá *rs :-o abraços.

kaoe

Sim quando você pega versões criadas por IDEs eles usam bastante aquele construtor cheio de parâmetros, o resultado é bom, eu acabo preferindo usar vários painéis pois acho muito confuso aquele construtor na hora de alterar alguma coisa na tela, mais é questão de costume meu, não acredito que deixe mais pesado usar tudo no construtor.

Criado 26 de junho de 2007
Ultima resposta 28 de jun. de 2007
Respostas 4
Participantes 2