有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我有一个JTree,我想应用渲染器,以便修改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)
 };

因此,在master binf=ding namedate中,get path返回namedate类型的路径,然后通过绑定选择该路径,无论搜索是否通过任何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);
  } 
  };

\u选择面板。getJUTree()。setCellRenderer(渲染器)

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


共 (1) 个答案

  1. # 1 楼答案

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

    附录:我只需要显示姓名,不需要日期

    DefaultTreeCellRenderergetTreeCellRendererComponent()方法调用“convertValueToText(),它最终调用value上的toString()”相反,您的实现应该使用首选值调用setText(),该值可能来自super实现建立的值