Pessoal, estou querendo capturar o evento quando o usuário clicar em uma folha da JTree, a partir disso tenho que executar algumas ações. tipo: Se o cara clicar na folha “Músicas” da JTree deve abrir uma caixa de texto, seria +/- isso. O problema é que não estou conseguindo capturar essa folha, eu trato o evento de click na JTree, mas eu quero tratar o click em folhas específicas. Já li os tutoriais e não consegui. Se alguém puder me ajudar como capturar o click sobre a folha “Músicas”, “Livros”, “Fotos”… preciso capturar cada folha separadamente e executar suas respectivas ações.
Dê uma olhada no códico abaixo…Ele está dentro do método que é disparado pelo clique do mouse, dentro do MouseListener que adicionoei à arvore…Neste código, se o usuário clicar duas vezes sobre um determinado nodo folha, eu obtenho o caminho (TreePath) deste nodo folha até a raiz, usando o método getPathForLocation(int x, int y), que retorna o nodo da árvore que se encontra em um determinado ponto (coordenada x e y obtidas da posição do clique do mouse, no meu caso)…A partir deste caminho, eu obtenho o último componente dele, o nosso nodo folha clicado. Por fim, obtenho deste nodo o objeto que ele encapsula, usando o getUserObject(). Perceba que este método retorna um Object, para processar corretamente as informações você dve fazer um casting (veja que no bloco try-catch eu trato uma ClassCastException)…
Porém tenho outro problema, quando clico na folha aluno o foco fica sobre ela, ou seja, ela fica selecionada, ai quando fecho o InternalFrame que eu exibo (como podem ver no codigo acima) e clico na folha “Aluno” novamente o InternalFrame não abre, mais isso pq essa folha estava selecionada, para abrir o InternalFrameCadastroAluno eu tenho q clicar em outra folha e depois clicar na folha “Aluno” novamente. Para resolver esse problema eu tenho q fazer com que a “Raiz” da JTree fique selecionada a cada click que for dado nas folhas da JTree, assim, com certeza meu problema se resolve, mas como fazer a Raiz ficar selecionada automaticamente? to quebrando a cabeça aqui…
quem puder me ajudar!!!
Grato,
flw
E
eclipso
A minha solução permite contornar este teu problema, uma vez que ela atende a todo e qqer clique sobre os nodos da árvore, ao contrário da sua solução, que só é disparada quando o valor selecionado é trocado…
J
Junioruesc
mas esse era meu problema o que eu queria era fazer isso, disparar o evento qdo fosse clicado em um nodo específico!!