[RESOLVIDO]Gravar as informações de uma JTabbedPane. AGUEM SABE E PODE ME AJUDAR?

10 respostas
marcos.menezes

Gravar as informações de uma JTabbedPane.

Antes de tudo, peço desculpas pelo tamanho do post.

Ola pessoal, estou trabalhando com uma JTabbedPane com 2 abas. Pois bem, estou tentando gravar as informações das abas e me aparece um erro que nao soube identificar, alguem poderia me ajudar?
Segue a tela para terem uma noção…

[img=http://img22.imageshack.us/img22/434/imagem2qf.th.jpg]

Segue o codigo aonde eu estou precisando de ajuda, se alguem souber eu agradeço demais.

public void actionPerformed(ActionEvent ae)

{	

JPanel painel = (JPanel)tela.getContentPane();

JPanel painel1 = (JPanel)painel.getComponent(0);

JTextField razao = (JTextField)painel1.getComponent(1);

JTextField cnpj1 = (JTextField)painel1.getComponent(3);

JTextField insest = (JTextField)painel1.getComponent(5);

JTextField cont1 = (JTextField)painel1.getComponent(7);

JTextField cont2 = (JTextField)painel1.getComponent(9);
JPanel painel2 = (JPanel)tela.getContentPane();
	JPanel painel3 = (JPanel)painel2.getComponent(1);
	JTextField rua1 = (JTextField)painel3.getComponent(1);
	JTextField num = (JTextField)painel3.getComponent(3);
	JTextField comple = (JTextField)painel3.getComponent(5);
	JTextField cid = (JTextField)painel3.getComponent(7);
	JTextField est = (JTextField)painel3.getComponent(9);
	JTextField bairro1 = (JTextField)painel3.getComponent(11);
	JTextField cep1 = (JTextField)painel3.getComponent(13); 
	JTextField tel = (JTextField)painel3.getComponent(15); 
	JTextField email1 = (JTextField)painel3.getComponent(17);
	JTextField pr = (JTextField)painel3.getComponent(19);
	
	Fornecedor forn = new Fornecedor();
	forn.setRazaoSocial(razao.getText());
	forn.setCnpj(cnpj1.getText());
	forn.setInscricaoEstadual(insest.getText());
	forn.setContato1(cont1.getText());
	forn.setContato2(cont2.getText());
	forn.setRua(rua1.getText());
	forn.setNumero((Integer.parseInt(num.getText())));
	forn.setComplemento(comple.getText());
	forn.setCidade(cid.getText());
	forn.setEstado(est.getText());
	forn.setBairro(bairro1.getText());
	forn.setCep(cep1.getText());
	forn.setTelefone(tel.getText());
	forn.setEmail(email1.getText());
	forn.setPontoreferencia(pr.getText());
	
	DAOFornecedor daof = new DAOFornecedor();
	
	if(ae.getActionCommand().equals(""))
	{
		daof.cadastrar(forn);
	}

Segue abaixo o erro…

Exception in thread AWT-EventQueue-0 java.lang.ClassCastException: javax.swing.JTabbedPane

at controle.ControleFornecedor.actionPerformed(ControleFornecedor.java:26)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

10 Respostas

marcos.menezes

Pessoal, quem puder responder, agradeço…

Abs

marcos.menezes

Alguem pode ajudar?

Agradeço !!!

lina

Oi,

Quando for postar sua codificação, utilize a tag
no inicio e no final
, ok?

Bom.. não entendi o que você gostaria de fazer com isso ó:

JPanel painel = (JPanel)tela.getContentPane(); 
JPanel painel1 = (JPanel)painel.getComponent(0); 
JTextField razao = (JTextField)painel1.getComponent(1); 
JTextField cnpj1 = (JTextField)painel1.getComponent(3); 
JTextField insest = (JTextField)painel1.getComponent(5); 
JTextField cont1 = (JTextField)painel1.getComponent(7); 
JTextField cont2 = (JTextField)painel1.getComponent(9); 

JPanel painel2 = (JPanel)tela.getContentPane(); 
JPanel painel3 = (JPanel)painel2.getComponent(1); 
JTextField rua1 = (JTextField)painel3.getComponent(1); 
JTextField num = (JTextField)painel3.getComponent(3); 
JTextField comple = (JTextField)painel3.getComponent(5); 
JTextField cid = (JTextField)painel3.getComponent(7); 
JTextField est = (JTextField)painel3.getComponent(9); 
JTextField bairro1 = (JTextField)painel3.getComponent(11); 
JTextField cep1 = (JTextField)painel3.getComponent(13); 
JTextField tel = (JTextField)painel3.getComponent(15); 
JTextField email1 = (JTextField)painel3.getComponent(17); 
JTextField pr = (JTextField)painel3.getComponent(19);

Achei isso desnecessário! poderia me explicar?

Tchauzin!

marcos.menezes

Lina,

Ok, utilizarei a tag code é pq eu nao conhecia.

Eu estou programando no padrao MVC-DAO (Modelo, Visao, Controle + o pacote DAO)
Modelo - Set’s e Get’s
Visao - É a tela propriamente dita com todas as opções
Controle - Onde eu faço o controle de todas as opções
DAO - Gravo tudo no banco de Dados.

Entao, eu coloquei 1 JTabbedPane para ficar com abas pois acho mais funcional pro meu caso especifico.
Cada JPanel com as JLabel e o JTextField quando eu coloco o JPanel ele cria uma aba.

No codigo

JPanel painel = (JPanel)tela.getContentPane

Eu to dizendo que as informações estão vindo de um painel localizado no frame (tela).

Quando eu faço

JTextField nome = (JTextField)painel.getComponent(1);

eu to pegando o valor digitado no componente localizado como 1.

O grande problema é: Como estou trabalhando com abas eu nao estou sabendo como fazer esse “casting” para pode pegar as informacoes digitados e grava-los no banco.

Polimorphism

esses components possuem métodos para pegar o texto em String.
Acho que é o método

.getText();

Boa sorte
[]`s

lina

Oi,

O Problema de fazer essa codificação é que você pode errar ao pesquisar no container o indice!
Ou seja, você pode estar armazenando em um JTextField um JTextArea.

Digamos que você está utilizando a codificação:

JTextField razao = (JTextField)painel1.getComponent(1); // Esse getComponent(1) é um JTextArea e você está utilizando um cast para JTextField.

Pronto, irá levantar a exceção:

Exception in thread "main" java.lang.ClassCastException: javax.swing.JTextArea cannot be cast to javax.swing.JTextField

O ideal será você utilizar apenas esse código:

Fornecedor forn = new Fornecedor(); forn.setRazaoSocial(razao.getText()); forn.setCnpj(cnpj1.getText()); forn.setInscricaoEstadual(insest.getText()); forn.setContato1(cont1.getText()); forn.setContato2(cont2.getText()); forn.setRua(rua1.getText()); forn.setNumero((Integer.parseInt(num.getText()))); forn.setComplemento(comple.getText()); forn.setCidade(cid.getText()); forn.setEstado(est.getText()); forn.setBairro(bairro1.getText()); forn.setCep(cep1.getText()); forn.setTelefone(tel.getText()); forn.setEmail(email1.getText()); forn.setPontoreferencia(pr.getText());

E pegando getTex() diretamente de seus reais componentes. (Só não irá poder fazer isso se não tem acesso a eles…)

Para verificar melhor, preciso das classes! dúvidas como essas não é facil de visualizar o problema.

Tchauzin!

marcos.menezes

Obrigado lina e ao amigo de cima…

Conversei hoje com meu amigo e ele me disse que eu estou querendo complicar.

A aba2 faz referencia a uma tabela diferente no banco de dados, entao pode ser ai o problema.
Conversei com a professora tambem e ela disse para eu colocar todos os dados em uma unica aba, por que se nao, eu teria que ter um botao salvar na aba1 e outro botao salvar na aba2, deve ser por isso que o banco nao entende na hora de salvar, por que nao sabe quem vem primeiro.

Irei fazer algumas alterações em cima do projeto e quando funcionar eu venho colocar, nao vou inventar… :slight_smile:

Lina, muito obrigado !! entendi tudo que disse…

marcos.menezes

Amigos, parece “tosco” mas é verdade, ainda nao coloquei com abas, mas está funcional isso que importa nesse momento.

Vim aqui para postar o seguinte erro/acerto

public void actionPerformed(ActionEvent ae) { JPanel painel = (JPanel)tela.getContentPane(); JPanel painel1 = (JPanel)painel.getComponent(0);

o erro esta no JPanel painel1 = (JPanel)painel.getComponent(1); eu tinha colocado 0

Iniciei minha aplicação com um JToolBar (deve ter contado como um painel) entao eu estava pegando as informacoes do JPanel 1 e nao o 0 (que é o JToolBar)

Simples assim, mas agradeço a ajuda…

Obrigado!!

lina

marcos.menezes:
Amigos, parece “tosco” mas é verdade, ainda nao coloquei com abas, mas está funcional isso que importa nesse momento.

Vim aqui para postar o seguinte erro/acerto

public void actionPerformed(ActionEvent ae) { JPanel painel = (JPanel)tela.getContentPane(); JPanel painel1 = (JPanel)painel.getComponent(0);

o erro esta no JPanel painel1 = (JPanel)painel.getComponent(1); eu tinha colocado 0

Iniciei minha aplicação com um JToolBar (deve ter contado como um painel) entao eu estava pegando as informacoes do JPanel 1 e nao o 0 (que é o JToolBar)

Simples assim, mas agradeço a ajuda…

Obrigado!!

Oi,

Acho que eu já tinha falado né?

Tchauzin!

Marky.Vasconcelos

Cara… é mais interessante guardar essas variaveis JTextField/Area e etc… na classe depois acessar diretamente invés de ser pelo indice.

Um dia voce vai colocar um campo a mais na sua aplicação e vai ter que mudar todos indices?

Ou então usar um Binder da view para um modelo.

Criado 19 de setembro de 2009
Ultima resposta 30 de set. de 2009
Respostas 10
Participantes 4