Seleção de várias linhas na Jtable

Ola´pessoal, essa é minha primeira participação aqui no GUJ.

Estou com problemas para pegar o valor da seleção de várias linhas na minha Jtable. É o seguinte, eu tenho uma tabela com duas colunas, uma com o nome do equipamento e outra com JCombobox. Então eu que pegar os equipamentos (coluna 0) quando a coluna com o Jcombobox (coluna 1) está com p valoe SIM.

E depois que possuir esses valores tenho que armazenar no BD.

Esse é o modelo da tabela:

[code]private void carregaTabelaEquip() throws SQLException{

    DefaultTableModel modelo = new DefaultTableModel();
    tblEquip.setModel(modelo);

    modelo.addColumn("EQUIPAMENTOS");
    modelo.addColumn("SELECIONE");

    tblEquip.setAutoResizeMode(tblEquip.AUTO_RESIZE_OFF);
    tblEquip.getColumnModel().getColumn(0).setPreferredWidth(150);
    tblEquip.getColumnModel().getColumn(1).setPreferredWidth(100);

    tblEquip.setAutoCreateRowSorter(true); // ordernar a tabela clicando nome coluna

    String opcoes[] = {"SIM"}; //Vetor de opções
    JComboBox cb = new JComboBox(opcoes); //cria o Jcombobox com as opções

[/code]

Esse é o que estou tentando fazer para pegar essas seleções:

[code] String valorOpcoes = tblEquip.getValueAt(tblEquip.getSelectedRow(), 1).toString();
if(valorOpcoes.equals(“SIM”)){
String[] valorSelecionado = {tblEquip.getValueAt(tblEquip.getSelectedRow(), 0).toString()};
List teste = new ArrayList();

        System.out.println(valorSelecionado);
        for(int i = 0; i<=valorSelecionado.length; i++){
            teste.add(valorSelecionado);
            reserva.setEquipamento(teste.toString());
        }

    }[/code]

Desde já agradeço!

Oi, Burarama!

Antes de tudo: [color=red] NÃO USE o DefaultTableModel[/color]! Além de você não trabalhar diretamente com objetos, gera uma série de implicações futuras, como esta!

Primeiro de tudo, crie uma classe que será o modelo da tabela, estendendo de AbstractTableModel. Para aprender a mexer, siga o link na minha assinatura!

Segundo: quando você criar o seu modelo, pode criar lá dentro um método que busque somente os valores que tiveram o “Sim” como selecionado!

Espero ter ajudado :smiley:

Olá, Nicolas!

Primeiramente obrigado pela atenção.

A princípio não poderei usar o AbstractTableModel, pois o sistema que estou fazendo já está na faze final, faltando alguns detalhes. Mas, com certeza irei estudar o AbstractTableModel.

É justamente como criar um método que busque somente os valores que tiveram o “Sim” como selecionado que estou precisando de ajuda.

Desde já agradeço.


int[] selecao = tabela.getSelectedRows();

com isso vc pega o indice de cada linha selecionada

logo, pra cada indice dentro de ‘selecao’, que equivale a linha, vc pega o valor das celulas correspondentes.

for (int i = 0; i < selecao.length; i++) { lista.add((String)modelo.getValueAt(selecao[i], 0)); }