두 개의 항목에 같은 아이콘이 있는지 확인하기 위해 Fest를 사용하고 있습니다.JTree에서 JLabel 가져 오기 Fest 프레임 워크 사용 (또는하지 않음)
실제로 경로와 함께 특정 항목에 액세스 할 수있는 JTreeFixture가 있습니다.
JTreeFixture tree = getTreeFromWindow();
JLabel label = (JLabel) tree.selectPath("/folder2/entry2").component.getCellRenderer();
JLabel labe2 = (JLabel) tree.selectPath("/folder2/entry3").component.getCellRenderer();
나는 두 JLabel의 (들)을 받고,하지만 내 Folder2와의 마지막 항목에 둘 점하고있다. Fest cant가 많이 도움이되었으므로 JTree를 직접 사용 (JTreeFixture.component() => 덕분에 JTree를 반환)하고 JTree에서 직접 정보를 추출하려고합니다.
항목의 경로를 알고 JTree에 JLabel을 포함 시키려면 어떻게해야합니까?
해결하십시오 JTreeFixture PreMadeCellRenderer가 DefaultTreeCellRenderer getTreeCellRendererComponent 컴퍼넌트를 반환하고, 그 인수 여기서
I가 사용 http://docs.oracle.com/javase/7/docs/api/javax/swing/tree/TreeCellRenderer.html을 설명 연장하는 렌더러 반환 getTreeFromWindow
public Icon getIconeFromPath(String path){
JTreeFixture tree = getTreeFromWindow();
PreMadeCellRenderer renderer = (PreMadeCellRenderer) tree.component().getCellRenderer().;
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.clickPath(path).component().getLastSelectedPathComponent();
JLabel label = (JLabel) renderer.getTreeCellRendererComponent(tree.component(), node, true, true, true, 0, true);
return label.getIcon();
}
: I이 방법을 만들어 매개 변수 0 내가 무엇을 넣을 지 알지 못했기 때문에, 그리고 일했습니다 :)
감사의 :
또한이 참조하십시오. 나는 이미 UesrObject를 읽는데 성공했고 나무에 포함 된 항목을 읽을 수는 있지만 트리에 표시된 아이콘을 찾고 있습니다 – Bertrand
아이콘은 트리 노드에도 정적으로 지정되어 있지 않습니다. TreeCellRenderer 구현 어딘가에 노드에 아이콘을 할당하지만,이 할당은 트리 그리기 중에 만 발생합니다. – lbalazscs
사실, 나는 트리 생성에 사용 된 TreeCellRenderer을 가져 오는 중 내 문제를 해결하고 해당 매개 변수로 getTreeCellRendererComponent를 호출했습니다. 나는 내가 가지고있는 아이콘에서 JLabel을 반환했다;) – Bertrand