public Component getListCellRendererComponent(JList list, Object value, int index, boolean selected, boolean focused) { Component c = super.getListCellRendererComponent( list, value, index, selected, focused); if (c instanceof JComponent) { // Add our child indicator to the node renderer. // Testing if the value is a leaf is useless as the nodes // usually have non-leaf Children instances. Node node = Visualizer.findNode(value); boolean hasChildren = true; CountChildrenCookie ccc = (CountChildrenCookie) node.getCookie( CountChildrenCookie.class); if (ccc != null) { hasChildren = ccc.getChildCount() > 0; } ArrowBorder border = new ArrowBorder(hasChildren); JComponent jc = (JComponent) c; jc.setBorder(border); } if (c instanceof HtmlRenderer.Renderer) { // Prefer the ... over simply clipping the label. HtmlRenderer.Renderer hr = (HtmlRenderer.Renderer) c; hr.setRenderStyle(HtmlRenderer.STYLE_TRUNCATE); } return c; } }