/ / Como obter componentes renderizados dentro do JTree (Swing Component Hierachy) - java, swing, awt, jtree

Como obter componentes renderizados dentro do JTree (Swing Component Hierachy) - java, swing, awt, jtree

Para algum objetivo específico, estou tentando manipular a interface do usuário acessando apenas a hierarquia de componentes Swing / AWT e estou preso no JTree.

Eu tenho um JTree que é renderizado usando um TreeCellRenderer personalizado e tenho JCheckBox em cada nó.

Amostra JTree

Estou tentando obter um objeto JCheckBox específico usado para processar um nó específico, para alterar programaticamente seu estado, o que tenho é o objeto Componente JTree.

Não consegui encontrar uma maneira de obter o componente JCheckBox criado para renderizar um nó específico.

Se eu continuar chamando Container.getComponents () recursivamente, chego a:

class javax.swing.JTree
class javax.swing.CellRendererPane
class javax.swing.tree.DefaultTreeCellRenderer

mas isso não parece fornecer componentes renderizados por renderizadores personalizados.

Respostas:

0 para resposta № 1

Como o @ JB-Nizet apontou no comentário, resolvi meu problema atualizando o objeto de modelo personalizado usando reflexão.

Object modelObject = nodeToSelect.getUserObject();
Method method = modelObject.getClass().getMethod("setSelected", boolean.class);
method.invoke(modelObject,true);