Problema com GridBagLayout

3 respostas
W

ola...

estou com um problema no meu codigo...
aparentemente esta tudo serto .. mais naum estou conseguindo add algumas coisas..

por exemplo.. eu adicionei 2 jpanels na tela 1 central para os campos (Jtextfield , etc..) e uma ao sul para os botoes cancelar , ok , e editar..
mais o gridbaglayout naum esta add certo os j panels... ele esta adicionando os dois juntos..

algem pode me ajudar??

o codigo é esse..

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;



public class TelasInternasP extends JInternalFrame 
{
        
     public TelaPrincipal telaPrincipal;
     
     public GridBagConstraints gbc = new GridBagConstraints();
     
     public GridBagLayout GridBag = new GridBagLayout();
     
     public JPanel jpCentral = new JPanel();
     
     public JPanel jpBotoes = new JPanel();
     
     public TelasInternasP(String titulo, TelaPrincipal telaPrincipal) 
     {
         super(titulo, true, true, true, true);
     
     	jpBotoes.setLayout(new GridLayout(1,3));
     
        jpCentral.setLayout(GridBag);
        
     	
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add("Center", jpCentral);
        getContentPane().add("South", jpBotoes);
        
       
        
      
        MeuJTextField jtfQuantidade  = new MeuJTextField(10);
        MeuJTextField jtfPrecoCusto  = new MeuJTextField(10);
        MeuJTextField jtfPrecoVenda  = new MeuJTextField(12);      
        MeuJTextField jtfCodigo      = new MeuJTextField(12);
        MeuJTextField jtfNome        = new MeuJTextField(14);
        
        JLabel lblNome        = new JLabel("Nome:");
        JLabel lblCodigo      = new JLabel("Código: ");
        JLabel lblPrecoCusto  = new JLabel("Preco De Custo: ");
        JLabel lblPrecoVenda  = new JLabel("Preco De Venda: ");
        JLabel lblQuantidade  = new JLabel("Quantidade:");
        JLabel lblDescricao   = new JLabel("Descrição:");
        
        

        
        
        getContentPane().setLayout(GridBag);
        
        gbc.anchor = GridBagConstraints.WEST;
        
        addElemento(1,1,1,1,lblCodigo,jpCentral);//coluna , linha
        addElemento(1,2,1,1,new JLabel(" "),jpCentral);
        addElemento(1,3,1,1,lblNome,jpCentral);
        addElemento(1,4,1,1,new JLabel(" "),jpCentral);
        addElemento(1,5,1,1,lblPrecoCusto,jpCentral);
        addElemento(1,6,1,1,new JLabel(" "),jpCentral);
        addElemento(1,7,1,1,lblPrecoVenda,jpCentral);
        addElemento(1,8,1,1,new JLabel(" "),jpCentral);
        addElemento(1,9,1,1,lblQuantidade,jpCentral);
        addElemento(2,1,1,1,jtfCodigo,jpCentral);
        addElemento(2,2,1,1,new JLabel(" "),jpCentral);
        addElemento(2,3,1,1,jtfNome,jpCentral);
        addElemento(2,4,1,1,new JLabel(" "),jpCentral);
        addElemento(2,5,1,1,jtfPrecoCusto,jpCentral);
        addElemento(2,6,1,1,new JLabel(" "),jpCentral);
        addElemento(2,7,1,1,jtfPrecoVenda,jpCentral);
        addElemento(2,8,1,1,new JLabel(" "),jpCentral);
        addElemento(2,9,1,1,jtfQuantidade,jpCentral);
        
       
        
        JScrollPane jspDescricao = new JScrollPane();
        
        JButton jbBotaoOK = new JButton("CONFIRMAR");
        JButton jbBotaoCancelar = new JButton("CANCELAR");
        JButton jbBotaoLimpar = new JButton("LIMPAR");
        
        
        jpBotoes.add(jbBotaoOK);
        jpBotoes.add(jbBotaoCancelar);
        jpBotoes.add(jbBotaoLimpar);
         
        this.telaPrincipal = telaPrincipal;
        telaPrincipal.jdPane.add(this);
        
        
    
        setSize(500 ,300);
        setVisible(true);
     }
     
     public void addElemento(int x, int y, int altura, int largura, Component comp, JPanel painel)
     {
        
          gbc.gridx = x;
          gbc.gridy = y;
          gbc.gridwidth = largura;
          gbc.gridheight= altura;
          GridBag.setConstraints((Component)comp,gbc);
          painel.add(comp, gbc);
          
     }
     class MeuJTextField extends JTextField implements FocusListener 
     {
       public MeuJTextField(int tamanho) 
       {
          super(tamanho);
          this.addFocusListener(this);
       }

       public void focusGained(FocusEvent e) 
       {
          this.setBackground(new Color(0,0,144));
     
       }

       public void focusLost(FocusEvent e) 
       {
          this.setBackground(new Color(255,255,255));
       }
       
     }

 }

desde ja agradeço vlw...

3 Respostas

T

Não é por nada não, mas se isso não for um exercício de escola (onde se pedem coisas absurdas em um prazo também absurdo, e com condições absurdas), eu diria para você não usar GridBagLayout.

http://madbean.com/anim/totallygridbag/

Use o MigLayout se você puder fazer isso.

http://www.miglayout.com/

W

ja me deram esta dica… mais o pior de tudu é q issu é um trabalho da univercidade que esta pedindo coisas absurdas realmente em um tempo absurdo… e eu nem sei mais oq faze…

entao vim pedir a ajuda de vcs… =(

dmandrak

thingol:


aparentemente esta tudo serto

Não é por nada não, mas se isso não for um exercício de escola (onde se pedem coisas absurdas em um prazo também absurdo, e com condições absurdas), eu diria para você não usar GridBagLayout.

http://madbean.com/anim/totallygridbag/

Use o MigLayout se você puder fazer isso.

http://www.miglayout.com/

Incrivelmente útil :stuck_out_tongue:

Criado 3 de outubro de 2008
Ultima resposta 3 de out. de 2008
Respostas 3
Participantes 3