Custom by Composition

Most of the time you won't need a full custom UI anyway.

Swing provides many methods for modifying L&F through object composition...

JComponent
+ setForeground(Color)
+ setBackground(Color)
+ setBorder(Border)
+ setFont(Font)
+ setInputMap(int, InputMap)
JComboBox
+ setEditor(ComboBoxEditor)
+ setKeySelectionManager(KeySelectionManager)
+ setModel(ComboBoxModel)
+ setPrototypeDisplayValue(Object)
+ setRenderer(ListCellRenderer)

     ...and you can do quite a bit by just setting properties.

AbstractButton
+ setMargin(Insets)
+ setIcon(Icon)
+ setSelectedIcon(Icon)
+ setPressedIcon(Icon)
+ setDisabledIcon(Icon)
+ setDisabledSelectedIcon(Icon)
+ setRolloverIcon(Icon)
+ setRolloverSelectedIcon(Icon)
+ setModel(ButtonModel)
JList
+ setCellRenderer(ListCellRenderer)
+ setFixedCellHeight(int)
+ setFixedCellWidth(int)
+ setLayoutOrientation(int)
+ setModel(ListModel)
+ setPrototypeCellValue(Object)
+ setSelectionBackground(Color)
+ setSelectionForeground(Color)
+ setSelectionModel(ListSelectionModel)