【发布时间】:2017-04-08 06:51:00
【问题描述】:
出于某些特定目的,我试图通过访问 Swing/AWT 组件层次结构来操作 UI,但我被困在 JTree 上。
我有一个使用自定义 TreeCellRenderer 渲染的 JTree,并且在每个节点中都有 JCheckBox。
我正在尝试获取用于呈现特定节点的特定 JCheckBox 对象,以编程方式更改其状态,我拥有的是 JTree 组件对象。
我找不到创建 JCheckBox 组件以呈现特定节点的方法。
如果我继续递归调用 Container.getComponents(),我会达到:
class javax.swing.JTree
class javax.swing.CellRendererPane
class javax.swing.tree.DefaultTreeCellRenderer
但这些似乎并没有给出由自定义渲染器渲染的组件。
【问题讨论】:
-
没有为特定节点创建复选框。这不是渲染器的工作方式。单个复选框实例用于绘制所有节点。要更改节点的显示方式,您需要更改模型,触发事件,以便树知道模型已更改,并要求渲染器重新渲染更改的节点。
-
感谢您指出正确的方向。