我正在显示一个自定义对象树,并且我已经设置了自定义的自定义CellTreeEditor
和CellTreeRenderer
集合。JTree,始终显示“编辑模式”中的所有节点
现在我真正想要的是始终显示所有对象,如“编辑模式”。现在我的CellTreeRenderer.getTreeCellRendererComponent()
和CellTreeEditor.getTreeCellEditorComponent()
实现几乎相同。这种作品,但我仍然需要点击一个节点来集中它,然后才能进行任何编辑。
有没有更明智的做法,也许就像说不应该使用渲染器,默认为我的CellTreeEditor
?
****** UPDATE ****
要clearify:我已经是这样看一棵树(是的,它也看起来像废话,但这是题外话):
现在,我通过具有渲染器和从getTreeCell[Renderer|Editor]Component()
返回相同的部件的编辑器实现这一点。
如果我单击渲染器提供的ComboBox上的向下箭头,它将闪烁轻微,因为它会打开下拉列表,但随后会被打断并由我的编辑器组件替换。这意味着我必须再次点击才能打开下拉菜单。这是我想要避免的行为。
没有,你不想让你的编辑器在单元之间共享(讨厌的事情开始发生)相反,添加一个TreeCellListener来监听领导者的变化(aka:focused )选择路径,然后在该路径上明确开始编辑 – kleopatra 2012-03-07 15:23:54
现在忘记闪烁(这可能是由于渲染器与编辑器略微错位),您基本上必须抓住启动编辑器的mouseEvent,检查它是否在里面该按钮,如果这样编程地显示下拉菜单,一旦编辑器被添加到层次结构 - 说起来容易做起来难,我知道:)如何显示一个sscce包括你的自定义渲染器/编辑器,所以我们试图让它在那里? – kleopatra 2012-03-08 14:24:06