last day (14 days later) » 

2:54 PM
0
Q: Imprimir nodes selecionados de uma JTree

Hugo MachadoTenho esta JTree: Tenho este código que me retorna todos os nodes da JTree: public void print() { recurse((TreeNode) jTree2.getModel().getRoot()); } public void recurse(TreeNode theNode) { System.out.println("1-- " + theNode); for (Enumeration theChildren = th...

 
Txii recursividade não é fácil ;) sabes se um node está selecionado ou não? Isto é esse código sabes? se sim publica o código como o fazes... (é que eu não faço a mínima nunca usei essas jtree)
 
Vou colocar o código na pergunta !
 
ja me ocorreram algumas formas de resolver isso, mas acho que são todas elas chamando pelo nome "GAMBIARRAS" ;) por exemplo uma delas, metes esse ultimo código numa função em que entra como parametro esse node da função recursiva, verificaIsSelecionado(TreeNode nome) e depois verificas se esses node existe dentro do checkedPaths se sim imprimes se não, não imprimes... Como disse é uma solução meio Gambiarra mas nao conheço nenhuma melhor
 
A questão é como é que eu depois vou buscar o node ao checkedPaths se o que ele retorna é um objeto por exemplo:[JTree, colors, blue]. Se eu fizer um verificaIsSelecionado(blue); como é que vou percorrer o Path [JTree, colors, blue] ?
 
pois não tinha pensado nisso, mas tens de ter um método qualquer que te devolve o node, isto porque ele sabe o caminho até ele logo também te pode devolver. (digo eu)
 
2:55 PM
[JTree, colors, blue] isso é um Object porque eu tentei aquela cena que me ensinaste: for (TreePath s : checkedPaths) { if(s instanceof Object) System.out.println("Entrei"); } E ele assume como sendo um objeto, há maneira de eu percorrer esse objeto ?
 
Pois acho que nao
o que podes fazer mas mais uma vez digo que é gambiarra^2
 
já agora que tamos no bate papo
ajuda-me aqui numa questão básica
 
pega nesse objeto e fazes o tostring para uma string
 
public void print() {
recurse((TreeNode) jTree2.getModel().getRoot());
}
 
depois é so ver se essa string contem o outro objecto que podes fazer o mesmo
 
2:57 PM
esse print não devolve nada, só imprime
se eu quiser adicionar essa lista toda a um array de strings como faço ?
 
na verdade não é ai que imprime
é no recurse
 
public void recurse(TreeNode theNode) {
System.out.println("1-- " + theNode);
for (Enumeration theChildren = theNode.children(); theChildren.hasMoreElements();) {
recurse((TreeNode) theChildren.nextElement());
}

}
e como faço então para adicionar esses dados a um ArrayList?
 
esse array list nao pode estar dentro de nenhuma dessas classes
tem de ser declarado em cima de todo
depois é so pores nesta linha
public void recurse(TreeNode theNode) {
System.out.println("1-- " + theNode);
for (Enumeration theChildren = theNode.children(); theChildren.hasMoreElements();) {
recurse((TreeNode) theChildren.nextElement());
}
**esquece nao alterei
dei enter sem querer
public void recurse(TreeNode theNode) {
System.out.println("1-- " + theNode); arrayListStrings.add(theNode.Tostring())
for (Enumeration theChildren = theNode.children(); theChildren.hasMoreElements();) {
recurse((TreeNode) theChildren.nextElement());
}
nao consegui dar o enter
mas acho que dá para perceber
tambem nao tenho a certeza
mas acho que funciona
 
vou tentar ;)
não me adiciona :s
declarei o array no construtor
depois pus arrayListStrings.add(theNode.Tostring()) na função recurse
e o arrayListStrings.size() = 0
 
pensava mesmo que ia funcionar
porque é o que o System.out.println("") faz
poe nesta linha System.out.println("1-- " + theNode.toString());
e testa a ver o que faz
depois podes testar assim tambem
arrayListStrings.add(theNode)
so o node a ver
e a melhor tentativa que tenho é
arrayListStrings.add((String)theNode) ;
faz esse 3 teste a ver se funciona
 
3:15 PM
o "TheNode" é um TreeNode logo não posso fazer arrayList.add(theNode)
vou ver essa ultima
 
pois tem logica
 
arrayListStrings.add((String)theNode) ;
essa é igual
não posso converter um treenode em string
xD
mas é esquisito :s
 
que mer** LOL só o System.out.println(); é que consegue tudo
ahahh
 
o print( the node) funciona
e adicionar o thenode.tostring não dá xD
mesmo ahahah
tou farto já de trabalhar com árvores -.-
só complicam
mas aquela cena que disseste funciona
eu tinha o path
e pus if(s.contains("Blue") return true
e funcionou
 
pois esse tinha logica funcionar
sao objeto iguais
 
3:19 PM
exato
 
so que é como disse isso é fazer gambiarra
 
desde que fique funcional xD
 
sim isso é verdade assima de tudo que funcione
 
tentei adicionar dentro do ciclo for mas sem sucesso xD
que cena mais estranha
nem consigo declarar um arrayList dentro da função recurse -.-
 
4:06 PM
tá feito ;)
obrigado pela ajuda !
 

last day (14 days later) »