Gostaria de saber como faço pra remover um arquivo de forma aleatória, ou seja esses arquivos que eu adiciono Vão ser mostrados numa JTable então eu escolho um e removo a linha, quando eu remover a linha eu quero que remova o arquivo, mais exatamente o arquivo que a linha foi removida.
Ele retorna um array com todos os indices selecionados. Depois disso, basta remover do seu ArrayList.
Lembre-se de remover do último para o primeiro, senão, ao remover o primeiro, os índices dos elementos “de baixo” vão mudar!
rafaelt
ViniGodoy:
Veja o método getSelectedIndices().
Ele retorna um array com todos os indices selecionados. Depois disso, basta remover do seu ArrayList.
Lembre-se de remover do último para o primeiro, senão, ao remover o primeiro, os índices dos elementos “de baixo” vão mudar!
Fazendo assim eu vou remover o arquivo de acordo com a linha selecionada??? como sei que eu removendo aquela linha estarei removendo exatamente o arquivo dakela linha???
Obs.: não existe esse método na classe ArrayList.
abraços
Rafael
ViniGodoy
O getSelectedIndices() é do JTable, não do ArrayList. Serve para exibir para você os índices das linhas que estão selecionadas pelo usuário.
Ou seja, se você der arquivos.remove(tabela.getSelectedIndices()[0]);
Você irá remover o primeiro elemento selecionado na tabela do ArrayList. Mas para isso funcionar cada um desses índices deve corresponder exatamente ao índice do arquivo no arraylist. O que não deve ser um problema se você povoou o seu TableModel através de um for ou um for each simples.
Uma sugestão é, implemente seu próprio table model. Não é muito difícil, basta fazer um filho de AbstractTableModel.
Crie um método delete(int row) que faça seu TableModel se encarregar de retirar o arquivo do ArrayList, apaga-lo do hd (com o método delete da classe file) e disparar um fireTableRowChanged para avisar a tabela de que aquela linha foi deletada.
Y
Yky_Mattshawn
Bom, a grafia correta do método “seria” getSelectedIndex(), índice é tradução de index.
Mas… se bem percebo, esse método não existe na JTable. Você pode, então, usar o getSelectedRow(), que retorna o índice da linha selecionada, ou getSelectedRows(), que retorna um array de ints com os índices das linhas selecionadas.
Em uma tabela completa, você ainda pode aproveitar os métodos getSelectedColumn() e getSelectedColumns(), que retornam o índice da coluna selecionada ou um array de ints contendo os índices das colunas selecionadas, respectivamente.
ViniGodoy
Foi mal, eu confundi. Na table é realmente getSelectedRows().
:oops:
A confusão ocorreu porque getSelectedIndices() é do JList.
Agora, não foi um erro de grafia. getSelectedIndex() retorna apenas o primeiro índice selecionado, enquanto getSelectedIndices() retorna um array, com todos os índices selecionados.
É a mesma diferença do getSelectedRow() e getSelectedRows().
Se sua tabela aceita seleção múltipla, com crtl ou shift. É melhor implementar corretamente, usando getSelectedRows(), senão vai ficar estranho para o usuário da sua aplicação.
Y
Yky_Mattshawn
É verdade, realmente o método getSelectedIndices() existe, eu pensava que Indices não era uma palavra do inglês. Desculpe pelo equívoco.
Sami_Koivu
Olá,
Realmente, em inglês o plural da palavra “index” pode ser ou “indices” ou “indexes”. Há confusão sobre isto até entre os que falam inglês como primeiro idioma.
Oxford English Dictionary:
Index Pl. indexes and indices. The pl indexes is usual in sense 5 only
(a) A table of contents prefixed to a book or argument;
(b) An alphabetical list at the end of a book, of the names, subjects etc, occurring in it, with indication of the places where they occur
[]s,
Sami
rafaelt
Valeu ae pessoal pela ajuda e desculpe a demora pra retornar, vou fazer então as implementações devidas e qualquer dúvida ou progresso eu posto.
Brigradão Vini pela atenção e ajuda que você vem me dando.