我有一个JTree,我想应用渲染器,以便我可以修改JTree节点的显示名称

时间:2014-01-09 06:52:54

标签: java swing jtree

因此,节点内部有不同的名称但显示其他名称,我可以很容易地对原始名称应用搜索约束,但显示修改后的名称。

 treePanel = new JUResourceTypeTreeStructurePanel
 (I18N_ID, "menu.title", _panelBinding,VIEW_NAME,     
    masterBindings,MASTER_VIEW_SYNC,
    wizard,archiveAction,toggleAction,unArchiveAction,   
    copyAction, pasteAction
 );

 JUCtrlHierTypeBinding[] masterBindings = new JUCtrlHierTypeBinding[]
 {
   new JUTreeAccessorTypeBinding("NodeType1", MASTER_VIEW_CLASS, "NameDate", "Children", masterIcon, masterIcon, masterIcon)
 };

所以这里在主binf = ding namedate传递,get路径返回命名类型的路径,然后通过绑定选择,无论是通过任何id,名称等进行搜索我希望这个NAMEDATE是NAMEDATEID,为唯一搜索路径创建,但仅显示名称为nodename。

DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer()
  {
    public Component getTreeCellRendererComponent(JTree tree, Object value, Boolean selected, Boolean expanded, Boolean leaf, int row, Boolean hasFocus)
  {


    return super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
  } 
  };

_SelectPanel.getJUTree()setCellRenderer(渲染);

有什么方法可以改变节点名称,任何人都可以建议。

1 个答案:

答案 0 :(得分:1)

如完整的example所示,DefaultMutableTreeNode“也可能包含对用户对象的引用。”您的userObject可以在toString()中返回显示名称,同时为搜索名称提供访问者。

附录:我只需要在那里显示名称,而不是日期。

getTreeCellRendererComponent() DefaultTreeCellRenderer方法会调用“convertValueToText(),最终会在toString()上调用value。”您的实现应该使用您的首选值调用setText(),可能是从super实现建立的值派生的。