import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class MainClass {
protected JFrame theFrame = new JFrame("LNF Switcher");
protected Container cp;
protected String curLF = "javax.swing.plaf.metal.MetalLookAndFeel";
protected JRadioButton previousButton;
public MainClass() {
theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cp = theFrame.getContentPane();
cp.setLayout(new FlowLayout());
ButtonGroup bg = new ButtonGroup();
JRadioButton bJava = new JRadioButton("Java");
bJava.addActionListener(new LNFSetter("javax.swing.plaf.metal.MetalLookAndFeel", bJava));
bg.add(bJava);
cp.add(bJava);
JRadioButton bMSW = new JRadioButton("MS-Windows");
bMSW.addActionListener(new LNFSetter("com.sun.java.swing.plaf.windows.WindowsLookAndFeel", bMSW));
bg.add(bMSW);
cp.add(bMSW);
JRadioButton bMotif = new JRadioButton("Motif");
bMotif.addActionListener(new LNFSetter("com.sun.java.swing.plaf.motif.MotifLookAndFeel", bMotif));
bg.add(bMotif);
cp.add(bMotif);
JRadioButton bMac = new JRadioButton("Sun-MacOS");
bMac.addActionListener(new LNFSetter("com.sun.java.swing.plaf.mac.MacLookAndFeel", bMac));
bg.add(bMac);
cp.add(bMac);
String defaultLookAndFeel = UIManager.getSystemLookAndFeelClassName();
JRadioButton bDefault = new JRadioButton("Default");
bDefault.addActionListener(new LNFSetter(defaultLookAndFeel, bDefault));
bg.add(bDefault);
cp.add(bDefault);
(previousButton = bDefault).setSelected(true);
theFrame.pack();
theFrame.setVisible(true);
}
class LNFSetter implements ActionListener {
String theLNFName;
JRadioButton thisButton;
LNFSetter(String lnfName, JRadioButton me) {
theLNFName = lnfName;
thisButton = me;
}
public void actionPerformed(ActionEvent e) {
try {
UIManager.setLookAndFeel(theLNFName);
SwingUtilities.updateComponentTreeUI(theFrame);
theFrame.pack();
} catch (Exception evt) {
JOptionPane.showMessageDialog(null, "setLookAndFeel didn't work: " + evt, "UI Failure",
JOptionPane.INFORMATION_MESSAGE);
previousButton.setSelected(true); // reset the GUI to agree
}
previousButton = thisButton;
}
}
public static void main(String[] argv) {
new MainClass();
}
}
|