| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 11:23:20
|
vinicius-serpa
JavaChild
Membro desde: 10/01/2007 00:34:39
Mensagens: 117
Localização: Sorocaba
Offline
|
Eu preciso de uma ajuda para implementar "drag" numa estrutura JTree.
Eu criei uma JTree, com devidos nós e já consigo recuperar um nó selecionado, "collapsed" ou "expanded". Agora preciso implementar a ação de clicar e arrastar nos nós (semelhante à estrutura do windows), mudando assim a ordem dos nós.
Eu cheguei a dar um setDragEnabled(true) na JTree criada, agora ela reconhece a ação "Drag", mas não permite que eu arraste (mostra o icone de "proibido" do mouse). O que devo fazer a partir daí?
|
Vinicius Serpa
Engenheiro de Software
www.vinicius-serpa.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 16:32:53
|
vinicius-serpa
JavaChild
Membro desde: 10/01/2007 00:34:39
Mensagens: 117
Localização: Sorocaba
Offline
|
Legal Pessoal!!!
Alguém mais ??
|
Vinicius Serpa
Engenheiro de Software
www.vinicius-serpa.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 17:32:26
|
furutani
JWizard
![[Avatar]](/images/avatar/c864aef53fe27a83053cf.jpg)
Membro desde: 11/10/2003 23:58:51
Mensagens: 2995
Localização: Iacri-SP e São Paulo-SP
Offline
|
Achei um exemplo no site mas tem alguns bugs. Uma delas é o cursor do mouse que indica que não é possivel soltar, mas mesmo assim funciona.
| Nome do arquivo |
TreeDragTest.java |
Download
|
| Descrição |
Exemplo retirado daqui http://www.java2s.com/Code/Java/Swing-JFC/DnDdraganddropJTreecode.htm |
| Tamanho |
9 Kbytes
|
| Baixado: |
307 vez(es) |
|
Até mais,
Roberto Jundi Furutani
Sun Certified Business Component Developer 1.3
Sun Certified Web Component Developer
Sun Certified Java Programmer
SAP Certified Development Associate - ABAP with SAP NetWeaver 7.0
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2007 07:37:55
|
vinicius-serpa
JavaChild
Membro desde: 10/01/2007 00:34:39
Mensagens: 117
Localização: Sorocaba
Offline
|
Este site (java2s.com) acaba de entrar para os meus favoritos, eu ainda não o conhecia. Obrigado Furutani, vou realizar os testes aqui e assim que tiver novidades retorno ao post para comentá-las.
|
Vinicius Serpa
Engenheiro de Software
www.vinicius-serpa.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2007 08:38:03
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Oi chará!
Vamos lá:
O primeiro passo é você criar uma Tree que faça o scrolling automático, caso o usuário posicione o mouse em suas extremidades. Sem isso, seu usuário vai ficar frustrado caso tente arrastar o componente para um nó que não está visivel. A classe abaixo é uma "autoscrolling tree", com esse intuito:
O segundo passo é definir o seu DragSourceListener. Esse é o cara que vai aceitar o Drag and Drop quando o usuário começar a faze-lo. No meu caso, coloquei uma referência não só à árvore como também ao form que contém a árvore. Assim, posso acessar métodos do form que me sejam úteis.
Esse cara abaixo fará o editor realizar um "cut" em qualquer nó que esteja sendo movido. Quando o usuário soltar o nó, um paste será dado (isso será feita na outra classe, abaixo dela), fazendo assim a movimentação.
Note que eu não desejo cut para o nó raiz. Isso é uma particularidade do meu sistema, que você poderá remover para sua tree.
Agora, você deve implementar o seu DropTargetListener. Esse é o cara que responde quando o mouse é liberado em algum lugar. Como eu disse anteriormente, eu movo os nós dando um "cut" quando a movimentação inicia, e um paste, quando ela termina.
Finalmente, falta colocar tudo para trabalhar junto.
Na construção da sua tree faça:
As atributos ds e dt são, respectivamente, um TreeDragSource e um TreeDropTarget.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/02/2007 12:15:41
|
vinicius-serpa
JavaChild
Membro desde: 10/01/2007 00:34:39
Mensagens: 117
Localização: Sorocaba
Offline
|
Furutani: Estou estudando as classes e interface envolvidas para implementar esse recurso. Não é uma coisa muito fácil para um iniciante , mas já consegui reproduzir o exemplo da java2s.
ViniGodoy: Sua explicação sobre cada parte do código postado como exemplo me ajudou a ter uma boa visão macro do recurso de DnD, porém fiquei com dúvida quanto ao uso da classe JEditionPanel. É uma classe q vc mesmo criou?
|
Vinicius Serpa
Engenheiro de Software
www.vinicius-serpa.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/02/2007 16:09:56
|
vinicius-serpa
JavaChild
Membro desde: 10/01/2007 00:34:39
Mensagens: 117
Localização: Sorocaba
Offline
|
furutani wrote:Achei um exemplo no site mas tem alguns bugs. Uma delas é o cursor do mouse que indica que não é possivel soltar, mas mesmo assim funciona.
Para solucionar o problema com o cursor:
|
Vinicius Serpa
Engenheiro de Software
www.vinicius-serpa.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/02/2007 17:52:18
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Sim, o JEdition panel é o painel que contém a arvore.
Mas os recursos dele não são importantes. A única coisa relevante é que o método cut() "marca" qual foi o nó selecionado e o método paste move aquele nó para posição indicada.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/07/2007 10:46:03
|
supertex
Thread.start()
Membro desde: 09/05/2007 21:16:25
Mensagens: 28
Offline
|
Muito interessante o tópico, resolveu meu problema.
Mas alguem teria a informação sobre o problema do cursor?
Ainda nao conseguir fazer com que sumisse aquele sinal de proibido do cursor.
Obrigado
|
|
|
 |
|
|