/** @version 1.30 2000-05-07 @author Cay Horstmann */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PlafTest { public static void main(String[] args) { PlafFrame frame = new PlafFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } } /** A frame with a button panel for changing look and feel */ class PlafFrame extends JFrame { public PlafFrame() { setTitle("PlafTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // add panel to frame PlafPanel panel = new PlafPanel(); Container contentPane = getContentPane(); contentPane.add(panel); } public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; } /** A panel with buttons to change the pluggable look and feel */ class PlafPanel extends JPanel { public PlafPanel() { makeButton("Metal", "javax.swing.plaf.metal.MetalLookAndFeel"); makeButton("Motif", "com.sun.java.swing.plaf.motif.MotifLookAndFeel"); makeButton("Windows", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } /** Makes a button to change the pluggable look and feel. @param name the button name @param plafName the name of the look and feel class */ void makeButton(String name, final String plafName) { // add button to panel JButton button = new JButton(name); add(button); // set button action button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { // button action: switch to the new look and feel try { UIManager.setLookAndFeel(plafName); SwingUtilities.updateComponentTreeUI (PlafPanel.this); } catch(Exception e) { e.printStackTrace(); } } }); } }