2014-01-09 2 views
-3

노드에 내부적으로 다른 이름이 있지만 다른 이름이 표시되므로 검색 제약 조건을 쉽게 적용 할 수 있습니다. 원래 이름이지만 수정 된 이름을 표시합니다. 그래서 여기 마스터 = 땡 namedate이 통과 binfJTree가 있고 렌더러를 적용하여 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) 
}; 

는 경로를 얻는 것은 다음의 검색 어떤 ID 통해 여부, 결합을 통해 선택된 namedate 타입 I이 NAMEDATE이 원하는 이름 등의 경로를 반환 고유 한 검색 경로 작성을 위해 NAMEDATEID를 사용하지만 이름 만 노드 이름으로 표시하십시오.

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 (renderer);

어떤 노드가 노드 이름을 변경했는지, 아무도 제안 할 수있는 것이 없습니다.

+0

나는 renderer를 적용했고 바인딩에 나는 juresourcetypetreestructurepanel을 전달하고자하는 수정 된 속성 이름을 전달했다. 그래서 searchin getpath() 함수는이 노드에 따라 treepath를 반환하지만 tree의 디스플레이에 수정 된 이름을 표시하도록한다. –

+0

나는 이것을 위해 렌더링을 사용해야하는 방법에 대한 일반적인 아이디어가 필요하다. 코드를 기밀로 공유 할 수있다. –

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오 (SSCCE는 비공개 코드가 아니며 정확한 문제에 집중하는 예제입니다). 이 문서는 [이 질문] (http://meta.stackexchange.com/q/214955/155831)에서 검토 및 토론되고 있으며 기고가 환영합니다. –

답변

1

example으로 표시된 것처럼 DefaultMutableTreeNode은 "사용자 개체에 대한 참조를 보유 할 수도 있습니다." userObject은 검색 이름에 접근자를 제공하면서 toString()에 표시 이름을 반환 할 수 있습니다.

부록 : 날짜가 아닌 이름 만 표시하면됩니다.

DefaultTreeCellRenderergetTreeCellRendererComponent() 방법은 "value에 궁극적 toString() 호출 convertValueToText()."호출 구현시 선호되는 값으로 setText()을 호출해야합니다. 이는 아마도 super 구현에 의해 설정된 값에서 파생되었을 것입니다.

+0

"namedate"는 트리의 전체 노드 이름입니다. 날짜가 표시되지 않도록 이름 만 표시하고 이름 날짜를 기준으로 검색하는 동안 렌더러에 노드 이름을 무시하는 함수가 없습니다. –