Ajuda com Jlist e ArrayList URGENTE!

Boa Tarde a todos,

Estou a um dia de apresentar o meu projeto final da facu mais ainda possuo um erro que não consegui remover.

Eu possuo 2 lista em meu projeto.

ListaArquivos que é um Jlist.
ListaMusica que é um ArrayList.

Dentro do meu programa eu tenho a opção de selecionar a música e movela para a posição de cima ou de baixo.

Quando eu seleciono a música e a movo para cima ou para baixo a ListaArquivos muda de posição, mais a ListaMusica permanece no mesmo local.

Eu gostaria de sincronizar as 2 listas para quando um objeto for movido de posição as 2 listas sejam alteradas.

Por favor alguém pode me ajudar !!!

Vixi cara não manjo muito mas acho que da para você pegar o count ou size da Jlist , criar uma outra list e percorrer e adiciona os valores dentro de um for mesmo pelo dataList.setSelectedIndex(1) .

Eu já peguei o tamanho da lista e consigo percorrer ela tranquilamente, eu não consegui é sincronizar o meu array com a minha lista.

Eu pego o seu tamanho e adiciono +1 a lista aumenta uma posição, o mesmo não acontece com o array, ai a lista fica na posição 1 e o array na 0.

É como se eu estivesse visualizando uma música do Capital Inicial mais quando eu clico nela toca Nirvana, pois somente a Lista visual foi alterada a lista que é responsável pelas músicas não foi alterada.

Muito Obrigado pela sua resposta.

A classe JList possui o seguinte método: addListSelectionListener(ListSelectionListener listener), onde um evento é disparado a cada mudança na seleção da Jlist. Acho que você pode ordenar o ArrayList dentro deste evento de acordo com o conteúdo do ArrayList, já que o JList possui um ListModel que representa o conteúdo do JList. Será que te ajudei?!

Abraço…mais informações em: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JList.html

A biblioteca GlazedLists provê classes para implementar List’s “observáveis”, ou seja, toda vez que houver manipulação em alguma lista, seu programa terá a oportunidade de reagir adequadamente:

http://www.publicobject.com/glazedlists/

Não… você não entendeu falei que pode resolver isso rapido se no final você percorrer a sua Jlist e add cada item em uma list.
Ou como disseram pode usar de um listenner para fazer a sua logica conforme você muda a JList você pode addicionar na sua list lenbrando que você podee adicionar em uma lista passando um indice " list.add(1,“valor”)" “empurrando” os itens que estavam ali para frente!

Galera agradeço a ajuda de todos mais não entendi muito bem oq falaram, segue o meu código, ele trabalha esclusivamente com a lista “ListaArquivos” que como eu ja falei é um Jlist, eu tb teria que alterar a posição da outra lista que é a “ListaMusica” que é um arraylist.

eu tenho que sincronizar essas duas listas pq elas trabalham com os mesmos arquivos, acredito que agora seja mais fácil vcs me ajudarem.

Mais uma vez muito obrigado pela ajuda de todos.

[code]private void btnSubirActionPerformed(java.awt.event.ActionEvent evt) {

DefaultListModel dlm = (DefaultListModel) ListaArquivos.getModel();
ListaArquivos.setSelectionMode(
ListSelectionModel.SINGLE_SELECTION);
        
 
    Object obj = ListaArquivos.getSelectedValue();  
if (obj != null) {  
    int index = ListaArquivos.getSelectedIndex();  
    if (index > 0) {  
        dlm.remove(index);  
        dlm.add(index-1, obj);  
        ListaArquivos.setSelectedIndex(index-1);
        
    }  
}  [/code]

Tenho uma idéa:

O seu ArrayList de objetos com dois atributos: nomeMusica e arquivoMusica, assim será mais fácil você sincronizar as duas. Você pode povoar o JList com o nomeMusica, e para ordenar o ArrayList você pode verificar pelo nomeMusica contido na JList, tudo isso dentro do evento do botão Subir.

Acho que assim ficará mais fácil manipular essas listas, já que desse modo as duas podem ser comparadas.

Será que ajudei?

[quote=emmanuelrock]Tenho uma idéa:

O seu ArrayList de objetos com dois atributos: nomeMusica e arquivoMusica, assim será mais fácil você sincronizar as duas. Você pode povoar o JList com o nomeMusica, e para ordenar o ArrayList você pode verificar pelo nomeMusica contido na JList, tudo isso dentro do evento do botão Subir.

Acho que assim ficará mais fácil manipular essas listas, já que desse modo as duas podem ser comparadas.

Será que ajudei?[/quote]

Ajudou sim emmanuelrock muito obrigado !!!

Ontem foi a minha apresentação e graças a Deus eu fui aprovado, só tenho que alterar coisas pakas na minha documentação, mais tudo bem.

Agradeço a todos deste fórum pela ajuda na realização deste projeto e acredito que sem ele o meu sistema não ficaria pronto.

Em breve pretendo disponibilizar o seu Jar e o código fonte do sistema para que ele possa ser utilizado por outras pessoas em suas aplicações e quem sabe ser um player aberto da comunidade do JUG, já venho a informar que o Gain Player, nome do meu player :D, funciona em Windows, Linux e em Mac um amigo ficou de testar para mim.

Mais uma vez muito obrigado !!!

Vinicius Teixeira