PropertyChangeListener () { PropertyChangeListener listener = super.createPropertyChangeListener(); return new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { listener.propertyChange(evt); if ("renderer".equals(evt.getPropertyName())) { if (!(list.getCellRenderer() instanceof MyDelegateRenderer)) { //noinspection unchecked list.setCellRenderer(new MyDelegateRenderer()); } } } }; }