/** Sanity: icons updated on LF change. */ public void testTreeIconsUpdateUI() { JXTree tree = new JXTree(); DefaultTreeRenderer renderer = new DefaultTreeRenderer(); tree.setCellRenderer(renderer); WrappingIconPanel before = (WrappingIconPanel) renderer.getTreeCellRendererComponent(tree, "", false, false, true, -1, false); Icon leaf = before.getIcon(); assertNotNull("sanity", leaf); assertEquals("sanity", UIManager.getIcon("Tree.leafIcon"), leaf); String lf = UIManager.getLookAndFeel().getName(); setSystemLF(!defaultToSystemLF); if (lf.equals(UIManager.getLookAndFeel().getName())) { LOG.info("cannot run test - equal LF" + lf); return; } SwingUtilities.updateComponentTreeUI(tree); WrappingIconPanel after = (WrappingIconPanel) renderer.getTreeCellRendererComponent(tree, "", false, false, true, -1, false); Icon leafAfter = after.getIcon(); assertNotNull("sanity", leafAfter); assertFalse("sanity", leaf.equals(leafAfter)); assertEquals("icon must be updated", UIManager.getIcon("Tree.leafIcon"), leafAfter); }
public void interactiveTransparentRenderer() throws IOException { final JXTree tree = new JXTree(new ComponentTreeTableModel(new JXFrame())); tree.setEditable(true); StringValue sv = new StringValue() { public String getString(Object value) { if (value instanceof Component) { return ((Component) value).getName(); } return " - no component - "; } }; DefaultTreeRenderer renderer = new DefaultTreeRenderer(sv); tree.setCellRenderer(renderer); tree.setForeground(Color.WHITE); JXPanel panel = new JXPanel(new BorderLayout()); ImagePainter imagePainter = new ImagePainter(XTestUtils.loadDefaultImage()); imagePainter.setFillHorizontal(true); imagePainter.setFillVertical(true); panel.setBackgroundPainter(imagePainter); panel.add(new JScrollPane(tree)); JXFrame frame = wrapInFrame(panel, "renderer"); WrappingProvider provider = (WrappingProvider) renderer.getComponentProvider(); provider.getWrappee().getRendererComponent(null).setOpaque(false); tree.setOpaque(false); ((JComponent) tree.getParent()).setOpaque(false); ((JComponent) tree.getParent().getParent()).setOpaque(false); Action edit = new AbstractActionExt("edit") { public void actionPerformed(ActionEvent e) { if (tree.isSelectionEmpty()) return; TreePath path = tree.getSelectionPath(); Component comp = (Component) path.getLastPathComponent(); String oldName = comp.getName(); if (oldName == null) { oldName = "none"; } String changed = oldName.length() > 60 ? oldName.substring(0, 20) : oldName + "+++++++++++++++++++++++++++++++++++++++++++++"; tree.getModel().valueForPathChanged(path, changed); } }; addAction(frame, edit); show(frame); }