@Override public Component getListCellRendererComponent( final JList list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) { if (!(value instanceof WrappedLogRecord)) { return new JLabel(); } final WrappedLogRecord wlr = (WrappedLogRecord) value; final JTextPane result = new JTextPane(); result.setDragEnabled(true); result.setText(wlr.formatted); result.setComponentOrientation(list.getComponentOrientation()); result.setFont(list.getFont()); result.setBorder(cellHasFocus || isSelected ? SELECTED_BORDER : EMPTY_BORDER); if (wlr.record.getLevel() == Level.CONFIG) { result.setForeground(DARK_BLUE); } if (wlr.record.getLevel() == Level.SEVERE) { result.setBackground(DARK_RED); result.setForeground(Color.WHITE); } if (wlr.record.getLevel() == Level.WARNING) { result.setForeground(DARK_RED); } if (wlr.record.getLevel() == Level.FINE || wlr.record.getLevel() == Level.FINER || wlr.record.getLevel() == Level.FINEST) { result.setForeground(DARK_GREEN); } final Object[] parameters = wlr.record.getParameters(); if (parameters != null) { for (final Object parameter : parameters) { if (parameter == null) { continue; } if (parameter instanceof Color) { result.setForeground((Color) parameter); } else if (parameter instanceof Font) { result.setFont((Font) parameter); } } } return result; }