Help Urgente JTable + JComboBox + Evento

0 respostas
fabioebner
Pessoal e o seguinte com um pusta de um problema, criei uma JTable com duas colunas na primeira tenho a descricao do meu componente e na segunda tenho um JComboBox para o usuario selecionar entre 3 tipos(visivel, desabilitado, Controle Total) ai beleza agora vem o meu problema eu tenho um objeto igual a essa tabela. com a descricao de cada componente e a opcao inicial "controle total" eu quero q qdo eu mudar o item no JComboBox ele mude automaticamente no meu objeto tbm fiz o seguinte codigo para CRIAR A TABELA:
private void arrumarTabela(TelaComponentes componentesTela){
        int totalComponentes = componentesTela.getTotalComponentes();
        DefaultTableModel dtm = (DefaultTableModel) jtComponentes.getModel();
        limparTabela();
        for(int contador = 0; contador <totalComponentes; contador++){
            Object linha[] = {componentesTela.getNmComponente(contador),componentesTela.getDsOpcaoComponente(contador)};
            dtm.addRow(linha);
        }
        JComboBox jcbOpcoesComponentes = new JComboBox();     
        
        jcbOpcoesComponentes.addItemListener(new ItemListener(){
            public void itemStateChanged(ItemEvent e){
                    atualizarObjeto();
            }
        });
       
        TableColumn colunaOpcoes = jtComponentes.getColumnModel().getColumn(1);
        jcbOpcoesComponentes.addItem("Controle Total");
        jcbOpcoesComponentes.addItem("Desabilitado");
        jcbOpcoesComponentes.addItem("Invisivel");
        colunaOpcoes.setCellEditor(new DefaultCellEditor(jcbOpcoesComponentes));
        DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
        renderer.setToolTipText("Clique para selecionar outra opção");
        colunaOpcoes.setCellRenderer(renderer);
        jcbOpcoesComponentes.setName("cbOpcoesComponentes");    
    }
e o seguinte codigo para o ItemListener
private void atualizarObjeto(){
        String  nmTela = jcbTela.getSelectedItem().toString();
        int     indiceComponente = 0;
        int     indiceTabela = 0;
        for (int contador = 0; contador < telaComponentes.length; contador++){
            if(telaComponentes[contador].getNmTela().equals(nmTela)){
                indiceComponente = contador;
            }
        }
        indiceTabela = jtComponentes.getSelectedRow();
        if(indiceTabela >=0){
            telaComponentes[indiceComponente].alteraOpcaoComponente(indiceTabela,jtComponentes.getValueAt(indiceTabela,1).toString());
        }
    }
agora vem a descricao do problema: para cada vez q eu clico no JComboBox ele executa o meu ItemListener 4 vezes nao sei o pq e outra ele so altera o conteudo do meu objeto se eu clicar sobre outra linha da minha tabela que tem um JCombobox eu utilizo o itemStateChanged parece q qdo ele entede qdo eu clico no JCombo, qdo eu clico no item e qdo ele sai do JCombo.. meio complicado neh.. mas espero que alguem possa me ajudar URGENTE..

tks

Criado 19 de abril de 2006
Respostas 0
Participantes 1