Problema com o jgoodies

2 respostas
D

Bom gente, acho q naum descobri ainda como o JForm do jgoodies funciona, mas ta dando um erro de execução aki, e naum consegui descobri o porque!

Exception in thread “main” java.lang.StackOverflowError
Press any key to continue…

tai o programa:

[i]import <a href="http://java.io">java.io</a>.<em>;

import <a href="http://java.net">java.net</a>.</em>;

import java.util.<em>;

import javax.swing.</em>;

import javax.swing.border.<em>;

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

import java.awt.<em>;

import java.sql.</em>;

import javax.swing.text.<em>;

import java.text.</em>;

import com.jgoodies.forms.layout.FormLayout;

import com.jgoodies.forms.builder.DefaultFormBuilder;

public class Fornecedor extends JFrame
{

JComponent panel = new Fornecedor().buildPanel();


JLabel lTitulo = new JLabel("CONTROLE DE CLIENTES:   ");

public static JTextField tCod = new JTextField(5);	  
public static JTextField tNome = new JTextField(30);
public static JTextField tRua = new JTextField(20);
public static JTextField tNum = new JTextField(5);
public static JTextField tCompl = new JTextField(5);
public static JTextField tBairro = new JTextField(10);
public static JTextField tCid = new JTextField("Juiz de Fora", 13);
public static JTextField tUF = new JTextField("MG",3);
public static JTextField tCEP = new JTextField(10);
public static JTextField tTel1 = new JTextField(15);
public static JTextField tTel2 = new JTextField(15);
public static JTextField tEmail = new JTextField(20);
public static JTextField tObs = new JTextField(40);

JButton bProcurar = new JButton(". . .");
JButton bAlterar = new JButton("Alterar");
JButton bCadastrar = new JButton("Cadastrar");
JButton bAdicionar = new JButton("Novo");
JButton bApagar = new JButton("Delete");
JButton bEsquerda = new JButton("&lt;-");
JButton bDireita = new JButton("-&gt;");

public Fornecedor()  
{
	
	setTitle("Cadastro de Cliente");
	setSize(620,350);
	setLocation(200,150);
	
	bAlterar.setMnemonic(KeyEvent.VK_A);
	bCadastrar.setMnemonic(KeyEvent.VK_C);
	bAdicionar.setMnemonic(KeyEvent.VK_D);
	bApagar.setMnemonic(KeyEvent.VK_P);
	
	this.getContentPane().add(panel);
		
}

public JComponent buildPanel() {
 	JTabbedPane tabbedPane = new JTabbedPane();
    tabbedPane.putClientProperty("jgoodies.noContentBorder", Boolean.TRUE);

    tabbedPane.add("Cadastro de Fornecedor", buildPainelFornecedor());
    return tabbedPane;
}
private JComponent buildPainelFornecedor() {
    FormLayout layout = new FormLayout(
            "pref, 4dlu, 30dlu, 4dlu, 20dlu, 4dlu, 50dlu, 4dlu, 20dlu, 4dlu, 50dlu, 4dlu, 20dlu, 4dlu, 50dlu, 4dlu",   // colunas
            "");                                                                              // linhas
   
    DefaultFormBuilder builder = new DefaultFormBuilder(layout);
    builder.setDefaultDialogBorder();
    
    
    builder.append(lTitulo);

    builder.nextLine();

    builder.append("Código do Cliente:", tCod);
    builder.append(bProcurar);
    builder.append("Nome do Cliente:", tNome);

    builder.nextLine();

    builder.appendSeparator("Endereço");

    builder.append("Rua:", tRua);
    builder.append("Nº:", tNum);
    builder.append("Compl.:", tCompl);

    builder.nextLine();
    
	builder.append("Bairro:", tBairro);
    builder.append("CEP:", tCEP);

    builder.nextLine();

    builder.append("Cidade:", tCid);
    builder.append("UF:", tUF);

    builder.nextLine();
    
    builder.appendSeparator("Telefone");

	builder.append("Telefone 1:", tTel1);
    builder.append("Telefone 2:", tTel2);
    
    builder.nextLine();

    builder.appendSeparator("Observações");

    builder.append(tObs);
            
    builder.nextLine();
    
    builder.append(bAlterar);
    builder.append(bCadastrar);
    builder.append(bAdicionar);
    builder.append(bApagar);
    
    builder.nextLine();
    
    builder.append(bEsquerda);
    builder.append("");
    builder.append(bDireita);


    return builder.getPanel();
}

public static void main(String[] args) 
{
	Fornecedor fr = new Fornecedor();
	fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  		
	fr.show();
}

} [/i]

Vlw

2 Respostas

F

acredito q o erro n esteja ocorrendo por causa do JForm, o StackOverflowError, se n me engano ocorre qndo o programa esgota a memoria… no seu caso, isso esta acontecendo pelo seguinte motivo:

qndo vc cria uma nova instancia para a classe Fornecedor, suas variaveis vao ser iniciadas, e nessa parte:

JComponent panel = new Fornecedor().buildPanel();

vc esta criando um OUTRO objeto, entaum, vc vai criar o primeiro Fornecedor, e automaticamente o novo Fornecedor vai criar um novo Fornecedor e assim por diante, ateh esgotar a memoria e ocorrer o erro…

D

Como eu faço para contornar esse problema?

Criado 13 de agosto de 2004
Ultima resposta 14 de ago. de 2004
Respostas 2
Participantes 2