Eu estou tentando mover os arquivos de meu Jlist, tenho uma quantidade X de itens e queria q quando eu apertasse um botão o arquivo selecionado fosse para cima ou para baixo.
Eu já tenho o Jlist pronto e consigo adicionar e remover arquivos dele, só não consigui implementar os comandos de para cima e para baixo.
olha, não testei ainda… mas você pode inserir o objeto na posição que quiser então você pode fazer o seguinte:
intposicao=0; //posição que será colocado o elementoidelemento=0; //posição do elemento que será alterado a posiçãojList.add(posicao,jList.get(idelemento));jList.remove(idelemento);
teste aí… e vê se dá certo
V
vini_rj2000
Ok vou testar, se alguem tiver mais algum exemplo por favor me informa.
Ele pega item que está selecionado no JList, agora eu queria apertar o botão de subir e este botão subir na ordenação de arquivos.
[]s
M
marcobiscaro2112
Tente algo como:
// código do botão para subir uma posiçãointselecionado=jList.getSelectedIndex();jList.add(jList.getSelectedValue(),selecionado-1);jList.remove(selecionado);
Funciona com apenas um valor selecionado. É preciso adaptar para vários.
V
vini_rj2000
Cara deu um erro.
xception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.awt.Component
at AdvancedToscoPlayer.btnSubirActionPerformed(AdvancedToscoPlayer.java:552)
at AdvancedToscoPlayer.access$100(AdvancedToscoPlayer.java:28)
at AdvancedToscoPlayer$2.actionPerformed(AdvancedToscoPlayer.java:93)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
M
marcobiscaro2112
É verdade… você deve trabalhar com o ListModel do JList. Desculpa o erro. Seria algo como:
// código do botão para subir uma posição// você deve ter um objeto do tipo DefaultListModel, por exemplo,// se esse objeto se chamar modelo, fazemos algo como:intselecionado=jList.getSelectedIndex();modelo.add(selecionado-1,modelo.get(selecionado));modelo.remove(selecionado);
V
vini_rj2000
marcobiscaro2112 brigadão pela sua ajuda, o arquivo selecionado está subindo uma posição, mais ao invés dele trocar de posição com o que está a cima dele, ele se duplica. ai fica dois arquivos com o mesmo nome.
Eu queia poder alternar as posições, se eu apertar para subir, oq está em cima desce e oq está embaixo sobe.
Entendeu?
Muito obrigado pela a sua ajuda.
M
marcobiscaro2112
vini_rj2000:
marcobiscaro2112 brigadão pela sua ajuda, o arquivo selecionado está subindo uma posição, mais ao invés dele trocar de posição com o que está a cima dele, ele se duplica. ai fica dois arquivos com o mesmo nome.
Eu queia poder alternar as posições, se eu apertar para subir, oq está em cima desce e oq está embaixo sobe.
Entendeu?
Muito obrigado pela a sua ajuda.
Sim, entendi. E imaginei que o método remove(int) fosse resolver isso… Talvez você deva usar no lugar de:
modelo.remove(selecionado);
Isso:
modelo.remove(selecionado+1);
V
vini_rj2000
Vlw Marco muito obrigado, está funcionando agora, e se fosse a função de descer, eu tentei fazer as alterações no código mais não funcionou.
intselecionado=jList.getSelectedIndex();modelo.add(selecionado+1,modelo.get(selecionado));modelo.remove(selecionado);// sem somar nem substrair!
OBS.: aqui não é feita nenhuma verificação para ter certeza que o usuário não vai selecionar o primeiro item e pressionar o botão para subir!! Você pode adicionar um listener ao JList e quando o usuário selecionar alguma opção, caso seja a primeira desabilita o botão subir (setEnabled(false)) e se for a última opção, desalibilita o botão descer.
V
vini_rj2000
Cara deu erro, quando eu seleciono o arquivo e aperto no botão para descer e nada acontece.
M
marcobiscaro2112
Erro de lógica de novo! Você deve usar no add o índice selecionado + 2.
V
vini_rj2000
Grande Marco !!!
Brigadão cara, pela sua ajuda, agora funcionou. :lol: