Seleção de várias linhas na Jtable

3 respostas
B

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:

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

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

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());
            }

        }

Desde já agradeço!

3 Respostas

N

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:

B

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.

S
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)); }

Criado 11 de outubro de 2010
Ultima resposta 14 de out. de 2010
Respostas 3
Participantes 3