Pluggable Look and Feel

Swing's PLAF lets you to change the Look and Feel at startup or even on-the-fly.

UIManager
+ UIManager()
+ getInstalledLookAndFeels() : LFInfo[]
+ setLookAndFeel(LookAndFeel)
+ setLookAndFeel(String)
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
UIManager.setLookAndFeel(new CatalystLookAndFeel());

To write your own L&F might require months of coding and testing.

As an alternative, the Metal L&F provides for installable Themes.

MetalLookAndFeel
+ MetalLookAndFeel()
+ getFocusColor() : ColorUIResource
+ getControlTextFont() : FontUIResource
many more...
+ setCurrentTheme(MetalTheme)
CatalystTheme
+ CatalystTheme()
# getPrimary1() : ColorUIResource
+ getControlTextFont() : FontUIResource
many more...
+ addCustomEntriesToTable(UIDefaults)

We install our theme first thing before creating the GUI.

public class CatalystJ {

    public static void main(String[] args) {

        MetalLookAndFeel.setCurrentTheme(new CatalystTheme());

        MainScreen mainScreen = new MainScreen();

        mainScreen.setVisible(true);
    }