如何在JTree中呈现组件(Swing Component Hierachy)

时间:2017-04-08 06:51:01

标签: java swing awt jtree

出于某些特定目的,我试图通过访问Swing / AWT组件层次结构来操纵UI,而我被困在JTree。

我有一个使用自定义TreeCellRenderer渲染的JTree,并且每个节点都有JCheckBox。

Sample JTree

我正在尝试获取用于呈现特定节点的特定JCheckBox对象,以编程方式更改它的状态,我所拥有的是JTree Component对象。

我无法找到一种方法来创建JCheckBox组件来呈现特定节点。

如果我继续以递归方式调用Container.getComponents(),我会到达:

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

但这些似乎没有给出自定义渲染器渲染的组件。

1 个答案:

答案 0 :(得分:0)

正如@ JB-Nizet在评论中指出的那样,我通过使用反射更新自定义模型对象来解决我的问题。

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