/** * Size effecting decoration vs. initial config (in provider). * * <p>For comparison: JXList * * <p>Decoration: use highlighter - works correctly * * <p>Config in Provider (usually not recommended): - override getRendererComponent, works * correctly */ public void interactiveBoldList() { final Locale[] locales = Locale.getAvailableLocales(); ListModel model = new AbstractListModel() { public Object getElementAt(int index) { return locales[index]; } public int getSize() { return locales.length; } }; JXList tree = new JXList(model); tree.setCellRenderer(new DefaultListRenderer()); final Font bold = tree.getFont().deriveFont(Font.BOLD, 20f); Highlighter hl = new AbstractHighlighter(HighlightPredicate.EVEN) { @Override protected Component doHighlight(Component component, ComponentAdapter adapter) { component.setFont(bold); return component; } }; tree.addHighlighter(hl); JXList treeP = new JXList(model); WrappingProvider provider = new WrappingProvider() { @Override public WrappingIconPanel getRendererComponent(CellContext context) { super.getRendererComponent(context); if (context.getRow() % 2 == 0) { rendererComponent.setFont(bold); } return rendererComponent; } }; treeP.setCellRenderer(new DefaultListRenderer(provider)); showWithScrollingInFrame(tree, treeP, "bold font: decorate vs. config"); }