Objetos já instanciados [RESOLVIDO]

Olá pessoal,

Estou desenvolvendo um app pra desk, e num determinado momento instancio vários objetos de uma mesma classe. Essa classe é um modelo de um Panel que contém um tabela, ou seja, cada objeto instanciado é adicionado num jTabbedPane eis o código:

Digitacao_teste d = new Digitacao_teste(); plan++; planilhas.addTab("Plan"+plan, new javax.swing.ImageIcon(getClass().getResource("/com/vitticontabil/lancamentoscontabeis/midia/icones/table.png")), d);

Agora preciso salvar o conteúdo destas tabelas (vou salvar em arquivos), ou seja, preciso pegar um objeto que já instanciei (do tipo Digitacao), para chamar um método que criei que me retorna o conteúdo que preciso.
Não sei se fui claro o bastante, mas minha dúvida é essa, preciso saber como pego objetos já instanciados.

Obrigado desde já.

Você quer pegar esses objetos instanciados onde?? Em outra classe? (Se sim, por que nao passa a referencia deles por parâmetro?)

Bem, pelo que deu para entender, teu objeto foi instanciado com o identificador d.

Cada objeto instanciado tem um identificador.

E ele tem os métodos para usar o conteúdo digitado.

entao simplesmente execute esse metodo com

d.metodoAExecutar()

e se ele retornar algo coloque isso em uma variavel ou objeto e com isso faca o salvamento.

Dificil entender diferente o que vc escreveu, sinto se nao for isso.

Ou vc quer dizer que instanciou, adicionou ao TabbedPane e depois perdeu a referencia?

Se for isso, use o proprio TabbedPane e use um get que retorne o conteudo dele colocando
em identificadores novos.

Se puder postar o codigo mais completo ficarah mais facil de entender.

Mauricio obrigado pela resposta, mas não era bem isso!

Na verdade o que eu preciso é recuperar os objetos do tipo “Digitacao_teste” que eu já instanciei. Na minha ignorância, acho que tenho que fazer um:

for(int i = 0; i < planilhas.getComponentCount(); i++){ Digitacao_teste dt = (Digitacao_teste) planilhas.getComponent(i).getClass(); dt.gravarDados(); }

mas não deu certo!

Aquele código que eu passei está dentro de um botão (eis o código completo):

private void planilhasMouseClicked(java.awt.event.MouseEvent evt) { if(planilhas.getSelectedComponent().equals(novaPlan)){ planilhas.remove(novaPlan); Digitacao_teste d = new Digitacao_teste(); plan++; planilhas.addTab("Plan"+plan, new javax.swing.ImageIcon(getClass().getResource("/com/vitticontabil/lancamentoscontabeis/midia/icones/table.png")), d); planilhas.addTab("", new javax.swing.ImageIcon(getClass().getResource("/com/vitticontabil/lancamentoscontabeis/midia/icones/table_add.png")), novaPlan); planilhas.setSelectedComponent(d); d.requestFocus(); } }

E

Ok, Entendo que esteja dentro de um botão, mas você não precisa criar o identificador dentro do botão.

Por que não coloca o codigo

Digitacao_teste d;

Fora do botão, como um atributo private e dentro do botão só coloca o resto:

d = new Digitacao_teste();

Assim ele estará disponível para outros metodos comparativos.

ou

Imaginando que estas classes Digitacao sejam herdantes de algo, crie um array tipo:

Pai_Digitacao d[5];
int conta = 0;

E depois no botão vá instanciando Digitacoes especificas e atrelando a cada elemento
do array para poder usar depois.

Oque eh essa novaPlan que aparece no if dentro do evento do botao?

Voce ta criando um painel e comparando com o que estah no TabbedPane?

Como funciona esse processo?

Pelo que entendi você cria um novo Painel e compara com o painel que
estah no Tabbed, se for igual você remove ele, e Daih cria um novo
do tipo Digitacao_Teste. É isso mesmo?

Desculpe mas tá dificil de entender.

E se na tua classe Digitacao tem o metodo de gravacao, nao vejo por que precisa
comparar para ver se uma eh aquela ou outra. Afinal isso a Orientacao a Objetos
garante.

Se eu clicar em gravar dentro do painel, ele vai acionar o metodo gravar daquele
objeto que estah no painel que estah sendo gravado. Nao precisa comparar para
ver se eh de outro.

Fiz um projetinho e coloquei em anexo. Usando um pouco do teu codigo, quem sabe
te dá alguma ideia.

Pessoal, desculpe estar dando tanto trabalho e obrigado pelos esforços!
Vou tentar explicar melhor: nessa app, tive que reinventar a roda (¬¬"), essa funcionalidade do sistema se parece com o excel. Tenho um Painel vazio (painel novaPlan) no JTabbed com um ícone só para o usuário clicar e adicionar uma nova aba com uma tabela (classe Digitacao_teste). Só que, não querem que cada tabela tenha seu botão salvar, a tela deve conter apenas um botão que salva todas as tabelas abertas! Òó
Por isso, quando o botão salvar (código abaixo) é clicado, eu preciso percorrer o JTabbed e ir salvando os objetos Digitacao_teste que já foram instanciados!!! tentei isso:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { for(int i = 0; i < planilhas.getComponentCount(); i++){ Object o = planilhas.getComponentAt(i).getClass(); if(o instanceof Digitacao_teste){ Digitacao_teste dt = (Digitacao_teste) o; dt.gravarDados(); } } }

mas ainda nao deu certo!

obrigado a todos

Tá, mas se é isso, esse código deve servir:

for(int i=0; i<planilhas.getComponentCount(); i++){ try{ Digitacao_teste d = (Digitacao_teste) planilhas.getComponentAt(i); d.salvarInformacoes(); } catch(Exception ex){} }

Isso vai correr todos os componentes e ativar o metodo de salvamento de cada um
seja lá qual for.

O try é apenas para evitar que a conversao de um outro tipo de componente que nao
seja realmente uma planilha atrapalhe a operacao de salvamento de todos.

E se quiser salvar apenas a que está selecionada, use um if dentro do try:

for (int i = 0; i < planilhas.getComponentCount(); i++) { try { Digitacao_teste d = (Digitacao_teste) planilhas.getComponentAt(i); if (planilhas.getSelectedComponent().equals(d)) { d.salvarInformacoes(); } } catch(Exception ex){} }

Ok, man muito obrigado deu certo aqui! eu já tinha conseguido um pouco antes de vc postar, mas optei pela sua maneira, acho que o código ficou mais limpo! O jeito que eu havia feito foi assim:

ArrayList <Object> pln = new ArrayList<Object>(); private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { for(int i = 0; i < pln.size(); i++){ Digitacao_teste dt = (Digitacao_teste) pln.get(i); if(!dt.gravarDados()){ break; } }

desse jeito dei muitas voltas e declarei coisas que nao precisavam! hehehe, mas obrigado mesmo!
obs.: vou ter que fazer o botao pra salvar um só tbm! rsrs vlw

Se ja esta tudo OK…

Coloque–> [RESOLVIDO] , Lá na pergunta =D