我正在使用 Fest 来检查两个条目是否具有相同的图标。
我实际上有一个 JTreeFixture,我可以通过它的路径访问一个特定的条目。
JTreeFixture tree = getTreeFromWindow();
JLabel label = (JLabel) tree.selectPath("/folder2/entry2").component.getCellRenderer();
JLabel labe2 = (JLabel) tree.selectPath("/folder2/entry3").component.getCellRenderer();
我得到了两个 JLabel,但它们都指向我的文件夹 2 中的最后一个条目。由于 Fest 在这里似乎帮不上什么忙,我打算直接使用 JTree(感谢 JTreeFixture.component() => 返回 JTree),并直接从 JTree 中提取信息。
知道条目的路径,我如何才能将 JLabel 包含在 JTree 中?
已解决:我创建了这个方法:
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 返回一个组件,这里解释了它的参数http://docs.oracle.com/javase/7/docs/api/javax/swing/tree/TreeCellRenderer.html
我使用参数 0 是因为我不知道要输入什么,并且工作了 :)