2012-02-21 1 views
1

내 코드에서 조건에 따라 JTree 노드에 Icon이 있거나 없을 수 있습니다. 문제는 노드에 대해 Icon을 설정하려고 할 때 노드 이름의 크기가 줄고 "..."이 추가 된 것입니다.트리가 생성 된 후 아이콘을 동적으로 추가 할 때 JTree 노드 이름의 크기 조정

기본적으로 노드는 아이콘 크기와 나머지 부분을 기준으로 크기를 다시 계산합니다.

어떻게하면이 동작을 방지하고 아이콘을 추가 할 때 노드의 크기를 확장 할 수 있습니까?

enter image description here

+0

'그러니까 기본적으로, 노드가 아이콘의 크기에 따라 크기를 recaulculating하고 rest.' 피팅입니다 - -> 기본적으로 .... [, 때문에 생성 된 코드를 (http://sscce.org/)이 문제 (들) 보지 않고 귀하의 질문에 대한 직접적인 대답을 시작하지 않으면 모든 [TreeModelEvents가 올바르게 완료되었는지 확인하기 위해 시작 ] (http://stackoverflow.com/a/7663094/714968) – mKorbel

+0

@mKorbel 제 질문은 그 형식이 잘되어 있지 않다는 것을 압니다. 그러나 테스트 케이스를 작성하려고 할 때 매우 길다는 것을 알았습니다. 아마이 문제에 대한 일반적인 해결책이 있거나 어쩌면 누군가 나를 인도 할 것입니다. 내가 대답을 찾지 못한다면 @kleopatra +1 (!!! 그가 다시 계산 한 크기 !!!)으로 대답 한 후 내 질문 –

+1

을 수정할 것입니다. – mKorbel

답변

6

는 당신이 그것을 할,하지만 당신이하는 TreeModel의 발 아래 그것을 의심 어디 모른다 : 여기

는 아이콘 /없는 의 스크린 샷이다 LayoutCache에 제비를 않습니다 .. 음 .. 크기의 캐싱 때문에 캐시가 무효화되었는지 확인해야합니다. 그렇게 할 수있는 유일한 방법은 TreeModelEvents 경유, 같은 (모델을 가정 유형 DefaultTreeModel을하다) :

myNodeData.setIcon(...); 
treeModel.nodeChanged(node); 
+0

답장을 보내 주셔서 감사합니다. 내일이 코드를 사용해 보겠습니다. . 사실 저는'iconNo'라는 속성을 가진 자체 TreeNode 클래스를 가지고 있습니다. 그러나 나는'treeModel.nodeChanged (node)'가 아이콘을 설정하는 곳의 트릭을 할 것이라고 생각한다. 트리 모델에 접근 할 수있다. –

+0

고마워, nodeChanged는 매력처럼 작동했다. :)하지만 질문이 있는데, 왜 'nodeChanged' 및'fireTreeNodesChanged'와 같은 트리에서 이벤트를 발생시키는 두 가지 방법이 있습니까? –

+0

두 번째는 "man"을 건너 뜁니다. 내부 사용법, 처음에는 외부 사용의 편의성 - 디자인의 최고는 아닙니다 (이상적으로는 모델이 항상 변경 사항을 완벽하게 제어해야 함)하지만 나무의 세계에서는 ... – kleopatra