Problema em carregar form com GridBagLayout

7 respostas
M

Sr.'s estou com um problema em meu trabalho, não consigo fazer o form carregar, utilizao o gerenciador de Layout GridBagLayout.
Ja tentei d tudo, olhando exemplos e nada, se alguem puder me ajudar, estou com muit urgência, pois tenho q entregar hoje o trabalho.
Segue abaixo codigo da minha classe principal
Desde já agradeço.

import javax.swing.<em>;

import javax.swing.JFrame;

import java.util.</em>;

import java.awt.<em>;

import java.awt.event.</em>;

public class Principal extends JFrame{

public Principal () {
    super("Controle de Contatos");
    //Define o gerenciador de layout do frame

// getContentPane().setLayout(new BorderLayout());
getContentPane().setLayout(new GridBagLayout());

//insere uma barra de menu
    JMenuBar barra = new JMenuBar();
    setJMenuBar(barra); //insere a barra no frame 
    
    ArquivoMenu bd = new ArquivoMenu();
    barra.add(bd);
    
    //Cria o painel com o formulário
    CadastroForm af = new CadastroForm();
    
    //Adiciona o painel com o formulário

// getContentPane().add(af, BorderLayout.CENTER);//Adiciona no centro do frame*/
getContentPane().add(af);//Adiciona no centro do frame*/

pack(); //ajusta o tamanho do frame para comportar os componentes.
    
    setVisible(true); //exibe o frame        
}    
    
private static int strToInt(String s) {
    int result=0;
    try {
        result = Integer.parseInt(s);
    }
    catch (NumberFormatException e) {
        System.out.println(e);
    }
    return result;
}

private static double strToDouble(String s) {
    double result=0;
    try {
        result = Double.parseDouble(s);
    }
    catch (NumberFormatException e) {
        System.out.println(e);
    }
    return result;
}    
public static void main(String args[]) {
    Principal app = new Principal();
    app.addWindowListener(
        new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.exit(0);
            }
        }
    );
}

}

7 Respostas

S

Qual o problema que está dando ?

S

No GrifBagLayout quando você for adicionar algum componente a um JPanel, você vai usar

getJContentPane().add(componente, cons);

esse cons tem os dados de como o componente vai se comportar na tela:

GridBagConstraints cons = new GridBagConstraints();

cons.insets  = new Insets(2,2,2,2);

cons.fill       = GridBagConstraints.BOTH;

cons.anchor = GridBagConstraints.NORTHEAST;

cons.gridx  = 0;

cons.gridy  = 0;

cons.gridheight = 0;

cons.gridwidth  = 1;

cons.ipadx = 0;

cons.ipady = 0;


M

esta e a linha 35

c.add(af);//Adiciona no centro do frame*/

Estas sao as linhas de erro que me apresenta

java.lang.IllegalArgumentException: adding a window to a container

at java.awt.Container.addImpl(Container.java:616)

at java.awt.Container.add(Container.java:307)

at Principal.<init>(Principal.java:35)

at Principal.main(Principal.java:76)
S

esse seu cadastro form herda de javax.swing.JPanel ???
(ele precisa herdar… pelo que eu estou entendendo ele é um panel com o formulário…)

M

ele herda o JFrame

S

MC,

Esse seu “af”, CadastroForm, precisa herdar de JPanel para poder ser incluído em no panel de um JFrame.
E quando vc for adicionar, não utilize getContentPane().add(af), mas sim getContentPane().add(af, cons) sendo que o “cons” ja foi previamente instanciado conforme eu te expliquei anteriormente.

M

Ok, a todos que me deram uma mão agradeço.
Qualquer dúvida entro em contato, por enquanto fica meu obrigado.
t+

Criado 23 de junho de 2004
Ultima resposta 24 de jun. de 2004
Respostas 7
Participantes 2