Malta, preciso colocar num array o numero de todas as linhas selecciondas num jTable !
como fazer?
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
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!
Obrigado!