Carregar array com todas as linhas tabela seleccionadas

Malta, preciso colocar num array o numero de todas as linhas selecciondas num jTable !

como fazer?

[quote=castroluis]Malta, preciso colocar num array o numero de todas as linhas selecciondas num jTable !

como fazer?[/quote]

Oi!

Percorra toda a JTable pegando cada item da lista e adicionando em uma nova!
Simples, não?

API da JTable e aqui o Tutorial do GUJ.
Abraços.

Eu usaria o método JTable.getSelectedRows():
http://download.oracle.com/javase/7/docs/api/javax/swing/JTable.html#getSelectedRows%28%29

Ele pode ser usado diretamente se os dados forem fixos (não sofrerem ordenação dentro da JTable).
Se puderem mudar de posição dentro do JTable, use essa classe:

import javax.swing.JTable;

/**
 * <p>A classe recupera os índices de linhas selecionados de uma tabela e os converte para os índices dentro do <i>TableModel</i></p>
 * <p>A classe é útil porquê quando uma JTable é reordenada, os índices das linhas passam a se diferenciar dos índices do modelo</p>
 */
public class ConverterLinhadoModelo {

    /**
     * Converte os índices selecionados da tabela para os índices do modelo da tabela
     *
     * @param tabela Tabela que será avaliada
     * @return Retorna um vetor com verdadeiros índices selecionados
     */
    public static final int[] getSelectedItens(JTable tabela) {
        //Seleciona os índices da tabela que estão selecionados
        int linhasSelecionadas[] = tabela.getSelectedRows();

        for (int i = 0; i < linhasSelecionadas.length; i++) {
            linhasSelecionadas[i] = tabela.convertRowIndexToModel(linhasSelecionadas[i]);
        }

        // a seleção será de acordo com o modelo da JTableModel - então
        // de acordo com os índices selecionados após execução do RowSorter

        return linhasSelecionadas;
    }

    /**
     * <p>Converte o índice selecionado da tabela para o índice do modelo da tabela.</p>
     * <p>É uma versão sobrecarregada do método que realiza a conversão somente para um ítem</p>
     *
     * @param tabela Tabela que será avaliada
     * @return Retorna um inteiro com o índice selecionado
     */
    public static final int getSelectedItem(JTable tabela) {

        int indices[] = getSelectedItens(tabela);
        if (indices != null && indices.length > 0) {
            return indices[0];
        } else {
            return -1;
        }

    }
}

Com essa classe, faça assim:

JTable tabela = new JTable();

//carregamento da tabela

int [] linhasSelecionadas = ConverterLinhadoModelo.getSelectedItens( tabela );

[quote=nel][quote=castroluis]Malta, preciso colocar num array o numero de todas as linhas selecciondas num jTable !

como fazer?[/quote]

Oi!

Percorra toda a JTable pegando cada item da lista e adicionando em uma nova!
Simples, não?

API da JTable e aqui o Tutorial do GUJ.
Abraços.[/quote]

Viva. . .

Dessa maneira pegaria em todas as linhas! Eu pretendo apenas as que estiverem seleccionadas!

Viva diego_qmota

Quanto ao getSelectedRows já testei! Mas com ele não consigo pegar o indice da linha seleccionada mas sim a ordem pela qual foi seleccionada.

ex: Se seleccionar a linha 4 e 6 vou obter o valor 0 e 1 e não o 3 e 5 como seria desejado!

Quanto á classe que me passou vou testar agora! já posto um resultado

Desde já obrigado!

Abraço

[quote=castroluis][quote=nel][quote=castroluis]Malta, preciso colocar num array o numero de todas as linhas selecciondas num jTable !

como fazer?[/quote]

Oi!

Percorra toda a JTable pegando cada item da lista e adicionando em uma nova!
Simples, não?

API da JTable e aqui o Tutorial do GUJ.
Abraços.[/quote]

Viva. . .

Dessa maneira pegaria em todas as linhas! Eu pretendo apenas as que estiverem seleccionadas!

[/quote]

Perfeito.
Use o método isCellSelected ou o isRowSelected para verificar se a linha em que está percorrendo a JTable está selecionada ou não, caso esteja, basta adicionar a lista :slight_smile:

Abraços.

Viva diego_qmota

Com a sua classe o resultado é o mesmo! Pelo que percebi a diferença é se as linhas sofreram ordenação!
Mas não é esse o meu problema!

Preciso por exemplo, se seleccionar as linhas 2 e 4 obter os inteiros 1 e 3, ou seja os respectivos indices das linhas seleccionadas!

Abraço

[quote=castroluis]Viva diego_qmota

Com a sua classe o resultado é o mesmo! Pelo que percebi a diferença é se as linhas sofreram ordenação!
Mas não é esse o meu problema!

Preciso por exemplo, se seleccionar as linhas 2 e 4 obter os inteiros 1 e 3, ou seja os respectivos indices das linhas seleccionadas!

Abraço[/quote]

Oi!

Teste com os métodos que citei.
Abraços.

Não entendi muito bem o que você quer, mas acho que seria essa a idéia:

[code]
private void indicesDaTabela() {
JTable teste = new JTable();
int[] colunasSelecionadas = teste.getSelectedColumns();

	for(int i : colunasSelecionadas) {
		//supondo que o indice seja a primeira coluna;
		int indice = Integer.parseInt(teste.getValueAt(i, 0).toString());
	}
}[/code]

agora que eu vi que o diego_qmota já fez um exemplo semelhante e mais elegante…porém este que eu citei é para pegar o valor da linha na primeira coluna.

Bom malta . . . pelo que li das vossas respostas já consigo resolver o meu problema!

Eu não conhecia os métodos isCellSelected ou o isRowSelected, se conhecesse faria um ciclo facilmente. Obrigado nel pelas dicas!

Obrigado a todos!

Abraços!

diego_qmota agora percebi o teu código! Não o analisei apenas utilizei! :slight_smile:

Obrigado!