Objetos estanciados com o mesmo nome

13 respostas
rafaelviny

bom dia galera

estou com um probleminha

preciso criar um JTabbedPane e dentro desse JTabbedPane tem um painel especializado criado por mim, porem eu preciso criar uma nova instancia desse painel especializado toda vez que uma nova aba é criada

public void adicionaAba(String titulo) {
        JpTabela jpTabela = new JpTabela();
        jpPainelTabulado.add(titulo, jpTabela);

    }

como os objetos tem o mesmo nome toda vez que são estanciado eu nao consigo trabalhar com eles, porque se eu criar 2 abas e processar alguma coisa na primeira as alterações somente aparecerão na segunda

desde já grato

13 Respostas

Gustavo_Sperandio

coloca JpTabela jpTabela = new JpTabela(); em um método que é chamado conforme necessário e que retorna um JpTabela!!!

rafaelviny

isso transferiria o problema para o metodo.

não mudaria nada

Gustavo_Sperandio

Então acho que entendi errado… de um exemplo…

doravan

utilize um atributo id e faça-o gerar um valor único a cada requisição, assim todas as instâncias serão diferentes.

rafaelviny

eu tenho um JTabbedPane é toda vez que o usuario cria clica em um item da JTable ele abre uma nova aba chamando aquele metodo.

ja pensei nisso, mas nao sei como fazer

tem algum exemplo

o metodo setName funcionaria ?
Gustavo_Sperandio
Ainda não entendi mas tudo bem, seguindo essa lógica de criar um atributo id, faça:

UUID u = UUID.randomUUID();

u.toString();

e preencha esse atributo esse uuid nunca se repete.
rafaelviny
<blockquote>UUID u = UUID.randomUUID();

u.toString();

e preencha esse atributo esse uuid nunca se repete.</blockquote>

mas como atribuir isso na hora de instanciar meu JpTabela ??

Gustavo_Sperandio

Foi como eu falei, eu ainda não estou entendendo bem sua situação, tem como você posta ou explicar melhor o momento que faz a chamada do método acima e que acontece esse problema?

rafaelviny

public void adicionaAba(String titulo) { JpTabela jpTabela = new JpTabela(); //jpPainelTabulado é um JTabbedPane jpPainelTabulado.add(titulo, jpTabela); }

public void mousePressed(MouseEvent e) { if (e.getSource() == tabela) { String nomeContato = String.valueOf(tabela.getValueAt(tabela.getSelectedRow(), 0)); if (validaTab(nomeContato) == false) { adicionaAba(nomeContato); } }

pense no msn, quando vc clicar em um contato abre uma janela

é isso que to tentando fazer, funciona, mas como estancio apenas 1 jpTabela eu perco a referencia dele ao abrir mais de uma aba e quando insiro algum dado as informaçoes vão para a tabela na ultima aba…

tinha que ser objetos diferentes minha jpTabela, porem nao tem como pois nao sei quantas abas o usuário vai abrir

Compilo agora? hahahahaha

R

acho que a ideia deles é vc criar uma variavel dentro do seu painel que seria seu ID e usar esse ID para pegar o painel e trabalhar com ele entende

eu iria sugerir trabalhar com o HashCode do seu painel mas dae complicaria algo facil... faz do jeito q eles falaram q fica Ok...

public void adicionaAba(String titulo) {  
    JpTabela jpTabela = new JpTabela();  
    jpTabela.setID ( titulo );
    jpPainelTabulado.add(titulo, jpTabela);  
}

// retorna sua tabela pra vc trabalhar com ela
public JpTabela getMinhaTabela( String titulo ) {

   // enquanto houver abas no seu tabbed panel
   for ( int i=0, i < jpPainelTabulado.getTabCount(); i++ ) {
      // se a aba na posicao i tem o titulo que vc passou no parametro, é sua tabela
      // supondo que vc ta usando o metodo fora do tabbed panel, criaria um get simples pra pegar o painel q vc jogou nele
      if ( jpPainelTabulado.getTabComponentAt(i).getSuaTabela().getID().equals( titulo ) ) {    
         return jpPainelTabulado.getTabComponentAt(i).getSuaTabela(); 
      }
   }
   
   return null; // ou uma tabela principal pra nao retornar null
}

se quiser trocar o titulo por um id randomico é valido tb..
nem testei isso dae então corrige os erros q tiverem ae =p

rafaelviny

valeu galera, vou ver isso amanha.

agora tem que trabalhar na migração de progress para java ^:P

rafaelviny
jpTabela.setID ( titulo );

é isso que preciso, porem o setID é um metodo do JPANEL?

aqui nao tem ele não

R

vc tem q criar seu proprio id e seu set e get neh…

Criado 22 de março de 2011
Ultima resposta 23 de mar. de 2011
Respostas 13
Participantes 4