2 つのエントリに同じアイコンがあるかどうかを確認するために Fest を使用しています。
私は実際に、そのパスで特定のエントリにアクセスできるものから、JTreeFixture を持っています。
JTreeFixture tree = getTreeFromWindow();
JLabel label = (JLabel) tree.selectPath("/folder2/entry2").component.getCellRenderer();
JLabel labe2 = (JLabel) tree.selectPath("/folder2/entry3").component.getCellRenderer();
2 つの JLabel を取得していますが、どちらも folder2 の最後のエントリを指しています。Fest はここではあまり役に立たないように思われるので、JTree を直接使用して (JTreeFixture.component() のおかげで => JTree を返す)、JTree から直接情報を抽出することを計画しています。
エントリのパスを知って、JTree に含まれる JLabel を取得するにはどうすればよいですか?
解決済み:私はこのメソッドを作成しました:
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();
}
getTreeFromWindow は JTreeFixture を返します PreMadeCellRenderer は DefaultTreeCellRenderer を拡張するレンダラーです getTreeCellRendererComponent はコンポーネントを返します
何を入力すればよいかわからなかったので、パラメーター0を使用して動作しました:)