[英]How to get components rendered inside JTree (Swing Component Hierachy)
For some specific purpose I am trying to manipulate UI by just accessing Swing/AWT component hierarchy, and I am stuck at JTree. 出于某些特定目的,我试图通过仅访问Swing / AWT组件层次结构来操纵UI,而我被困在JTree中。
I have a JTree which is rendered using a custom TreeCellRenderer, and have JCheckBox in each node. 我有一个使用自定义TreeCellRenderer呈现的JTree,并且在每个节点中都有JCheckBox。
I am trying to obtain a specific JCheckBox object used to render a specific node, to programmatically change it's state, what I have is JTree Component object. 我正在尝试获取用于呈现特定节点的特定JCheckBox对象,以编程方式更改其状态,我拥有的是JTree Component对象。
I couldn't find a way to get the JCheckBox component created to render a specific node. 我找不到一种方法来创建JCheckBox组件以呈现特定的节点。
If I keep calling Container.getComponents() recursively, I reach upto : 如果我继续递归地调用Container.getComponents(),则可达:
class javax.swing.JTree
class javax.swing.CellRendererPane
class javax.swing.tree.DefaultTreeCellRenderer
but these doen't seems to giving out components rendered by custom renderers. 但是这些似乎并没有给出自定义渲染器渲染的组件。
As @JB-Nizet pointed out in comment, I solved my problem by updating custom model object using reflection. 正如@ JB-Nizet在评论中指出的那样,我通过使用反射更新自定义模型对象解决了我的问题。
Object modelObject = nodeToSelect.getUserObject();
Method method = modelObject.getClass().getMethod("setSelected", boolean.class);
method.invoke(modelObject,true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.