import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class SwingEx1 extends JFrame implements ActionListener {
	public SwingEx1() {
		super("first swing application");
		JPanel myPanel = new JPanel();
		JButton btn_win = new JButton("Windows");
		JButton btn_motif = new JButton("Motif");
		JButton btn_metal = new JButton("Metal");

		btn_win.setToolTipText("switch to Windows look-and-feel");
		btn_motif.setToolTipText("switch to Motif look-and-feel");
		btn_metal.setToolTipText("switch to Metal look-and-feel");

		myPanel.add( btn_win );
		myPanel.add( btn_motif );
		myPanel.add( btn_metal );

		btn_win.addActionListener(this);
		btn_motif.addActionListener(this);
		btn_metal.addActionListener(this);

		getContentPane().add("South", myPanel);

		addWindowListener( new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				Window wnd = we.getWindow();

				wnd.setVisible(false);
				wnd.dispose();
				System.exit(0);
			} //windowClosing()
		}//anonymous inner class
		);
	} //constructor

	public void actionPerformed(ActionEvent ae) {
		String cmd = ae.getActionCommand(),
				 plaf="";

		if ( cmd.equals("Metal") ) {
			plaf = "javax.swing.plaf.metal.MetalLookAndFeel";
		} else {
			if ( cmd.equals("Motif") ) {
				plaf = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
			} else {
				if( cmd.equals("Windows") ) {
					plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
				} //else
			} //else
		} //else

		try {
			UIManager.setLookAndFeel(plaf);
			SwingUtilities.updateComponentTreeUI(this);
		} catch (UnsupportedLookAndFeelException e) {
			System.err.println(e.toString());
   	} catch (ClassNotFoundException e) {
			System.err.println(e.toString());
		} catch (InstantiationException e) {
			System.err.println(e.toString());
		} catch (IllegalAccessException e) {
			System.err.println(e.toString());
		} //catch
	} //actionPerformed()

	public static void main(String[] args) {
		SwingEx1 wnd = new SwingEx1();
		wnd.setSize(300,200);
		wnd.pack();
		wnd.setVisible(true);
	} //end main()
} //class SwingEx1