<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_JFC%2FLook_Feel</id>
		<title>Java/Swing JFC/Look Feel - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSwing_JFC%2FLook_Feel"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_JFC/Look_Feel&amp;action=history"/>
		<updated>2026-04-22T21:12:23Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Swing_JFC/Look_Feel&amp;diff=7477&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_JFC/Look_Feel&amp;diff=7477&amp;oldid=prev"/>
				<updated>2010-06-01T06:46:46Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:46, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Swing_JFC/Look_Feel&amp;diff=7476&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Swing_JFC/Look_Feel&amp;diff=7476&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:45Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== A Look-and-feel switcher ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.ru/, 1996-2002.&lt;br /&gt;
 * All rights reserved. Software written by Ian F. Darwin and others.&lt;br /&gt;
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 * 1. Redistributions of source code must retain the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 * 2. Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *    notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *    documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS&amp;quot;&amp;quot;&lt;br /&gt;
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED&lt;br /&gt;
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS&lt;br /&gt;
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR&lt;br /&gt;
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF&lt;br /&gt;
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS&lt;br /&gt;
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN&lt;br /&gt;
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)&lt;br /&gt;
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 * &lt;br /&gt;
 * Java, the Duke mascot, and all variants of Sun&amp;quot;s Java &amp;quot;steaming coffee&lt;br /&gt;
 * cup&amp;quot; logo are trademarks of Sun Microsystems. Sun&amp;quot;s, and James Gosling&amp;quot;s,&lt;br /&gt;
 * pioneering role in inventing and promulgating (and standardizing) the Java &lt;br /&gt;
 * language and environment is gratefully acknowledged.&lt;br /&gt;
 * &lt;br /&gt;
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&amp;amp;T, for&lt;br /&gt;
 * inventing predecessor languages C and C++ is also gratefully acknowledged.&lt;br /&gt;
 */&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.FlowLayout;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.ButtonGroup;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JOptionPane;&lt;br /&gt;
import javax.swing.JRadioButton;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
/**&lt;br /&gt;
 * A Look-and-feel switcher.&lt;br /&gt;
 * &lt;br /&gt;
 * @author Ian Darwin, http://www.darwinsys.ru/&lt;br /&gt;
 * @version $Id: LNFSwitcher.java,v 1.7 2004/03/07 04:03:15 ian Exp $&lt;br /&gt;
 */&lt;br /&gt;
public class LNFSwitcher {&lt;br /&gt;
  /** The frame. */&lt;br /&gt;
  protected JFrame theFrame;&lt;br /&gt;
  /** Its content pane */&lt;br /&gt;
  protected Container cp;&lt;br /&gt;
  /** Start with the Java look-and-feel, if possible */&lt;br /&gt;
  final static String PREFERREDLOOKANDFEELNAME = &amp;quot;javax.swing.plaf.metal.MetalLookAndFeel&amp;quot;;&lt;br /&gt;
  protected String curLF = PREFERREDLOOKANDFEELNAME;&lt;br /&gt;
  protected JRadioButton previousButton;&lt;br /&gt;
  /** Construct a program... */&lt;br /&gt;
  public LNFSwitcher() {&lt;br /&gt;
    super();&lt;br /&gt;
    theFrame = new JFrame(&amp;quot;LNF Switcher&amp;quot;);&lt;br /&gt;
    theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    cp = theFrame.getContentPane();&lt;br /&gt;
    cp.setLayout(new FlowLayout());&lt;br /&gt;
    ButtonGroup bg = new ButtonGroup();&lt;br /&gt;
    JRadioButton bJava = new JRadioButton(&amp;quot;Java&amp;quot;);&lt;br /&gt;
    bJava.addActionListener(new LNFSetter(&lt;br /&gt;
        &amp;quot;javax.swing.plaf.metal.MetalLookAndFeel&amp;quot;, bJava));&lt;br /&gt;
    bg.add(bJava);&lt;br /&gt;
    cp.add(bJava);&lt;br /&gt;
    JRadioButton bMSW = new JRadioButton(&amp;quot;MS-Windows&amp;quot;);&lt;br /&gt;
    bMSW.addActionListener(new LNFSetter(&lt;br /&gt;
        &amp;quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&amp;quot;, bMSW));&lt;br /&gt;
    bg.add(bMSW);&lt;br /&gt;
    cp.add(bMSW);&lt;br /&gt;
    JRadioButton bMotif = new JRadioButton(&amp;quot;Motif&amp;quot;);&lt;br /&gt;
    bMotif.addActionListener(new LNFSetter(&lt;br /&gt;
        &amp;quot;com.sun.java.swing.plaf.motif.MotifLookAndFeel&amp;quot;, bMotif));&lt;br /&gt;
    bg.add(bMotif);&lt;br /&gt;
    cp.add(bMotif);&lt;br /&gt;
    JRadioButton bMac = new JRadioButton(&amp;quot;Sun-MacOS&amp;quot;);&lt;br /&gt;
    bMac.addActionListener(new LNFSetter(&lt;br /&gt;
        &amp;quot;com.sun.java.swing.plaf.mac.MacLookAndFeel&amp;quot;, bMac));&lt;br /&gt;
    bg.add(bMac);&lt;br /&gt;
    cp.add(bMac);&lt;br /&gt;
    String defaultLookAndFeel = UIManager.getSystemLookAndFeelClassName();&lt;br /&gt;
    // System.out.println(defaultLookAndFeel);&lt;br /&gt;
    JRadioButton bDefault = new JRadioButton(&amp;quot;Default&amp;quot;);&lt;br /&gt;
    bDefault.addActionListener(new LNFSetter(defaultLookAndFeel, bDefault));&lt;br /&gt;
    bg.add(bDefault);&lt;br /&gt;
    cp.add(bDefault);&lt;br /&gt;
    (previousButton = bDefault).setSelected(true);&lt;br /&gt;
    theFrame.pack();&lt;br /&gt;
    theFrame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  /* Class to set the Look and Feel on a frame */&lt;br /&gt;
  class LNFSetter implements ActionListener {&lt;br /&gt;
    String theLNFName;&lt;br /&gt;
    JRadioButton thisButton;&lt;br /&gt;
    /** Called to setup for button handling */&lt;br /&gt;
    LNFSetter(String lnfName, JRadioButton me) {&lt;br /&gt;
      theLNFName = lnfName;&lt;br /&gt;
      thisButton = me;&lt;br /&gt;
    }&lt;br /&gt;
    /** Called when the button actually gets pressed. */&lt;br /&gt;
    public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      try {&lt;br /&gt;
        UIManager.setLookAndFeel(theLNFName);&lt;br /&gt;
        SwingUtilities.updateComponentTreeUI(theFrame);&lt;br /&gt;
        theFrame.pack();&lt;br /&gt;
      } catch (Exception evt) {&lt;br /&gt;
        JOptionPane.showMessageDialog(null,&lt;br /&gt;
            &amp;quot;setLookAndFeel didn&amp;quot;t work: &amp;quot; + evt, &amp;quot;UI Failure&amp;quot;,&lt;br /&gt;
            JOptionPane.INFORMATION_MESSAGE);&lt;br /&gt;
        previousButton.setSelected(true); // reset the GUI to agree&lt;br /&gt;
      }&lt;br /&gt;
      previousButton = thisButton;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] argv) {&lt;br /&gt;
    new LNFSwitcher();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== awt.font.desktophints ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.util.Map;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
/*&lt;br /&gt;
 * FontHints.java&lt;br /&gt;
 *&lt;br /&gt;
 * Created on May 1, 2007, 4:07 PM&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright (c) 2007, Sun Microsystems, Inc&lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   * Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *   * Redistributions in binary form must reproduce the above&lt;br /&gt;
 *     copyright notice, this list of conditions and the following&lt;br /&gt;
 *     disclaimer in the documentation and/or other materials provided&lt;br /&gt;
 *     with the distribution.&lt;br /&gt;
 *   * Neither the name of the TimingFramework project nor the names of its&lt;br /&gt;
 *     contributors may be used to endorse or promote products derived&lt;br /&gt;
 *     from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&lt;br /&gt;
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&lt;br /&gt;
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&lt;br /&gt;
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&lt;br /&gt;
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&lt;br /&gt;
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&lt;br /&gt;
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&lt;br /&gt;
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
/**&lt;br /&gt;
 *&lt;br /&gt;
 * @author Chet&lt;br /&gt;
 */&lt;br /&gt;
public class FontHints extends JComponent {&lt;br /&gt;
    &lt;br /&gt;
    Map desktopHints = null;&lt;br /&gt;
    &lt;br /&gt;
    /** Creates a new instance of FontHints */&lt;br /&gt;
    public FontHints() {&lt;br /&gt;
        Toolkit tk = Toolkit.getDefaultToolkit();&lt;br /&gt;
        desktopHints = (Map)(tk.getDesktopProperty(&amp;quot;awt.font.desktophints&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void paintComponent(Graphics g) {&lt;br /&gt;
        Graphics2D g2d = (Graphics2D)g;&lt;br /&gt;
        g2d.setColor(Color.WHITE);&lt;br /&gt;
        g2d.fillRect(0, 0, getWidth(), getHeight());&lt;br /&gt;
        g2d.setColor(Color.BLACK);&lt;br /&gt;
        &lt;br /&gt;
        g2d.drawString(&amp;quot;Unhinted string&amp;quot;, 10, 20);&lt;br /&gt;
        if (desktopHints != null) {&lt;br /&gt;
            g2d.addRenderingHints(desktopHints);&lt;br /&gt;
        }&lt;br /&gt;
        g2d.drawString(&amp;quot;Desktop-hinted string&amp;quot;, 10, 40);&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
    &lt;br /&gt;
    private static void createAndShowGUI() {&lt;br /&gt;
        JFrame f = new JFrame(&amp;quot;FontHints&amp;quot;);&lt;br /&gt;
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
        f.setSize(200, 90);&lt;br /&gt;
        FontHints component = new FontHints();&lt;br /&gt;
        f.add(component);&lt;br /&gt;
        f.setVisible(true);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    public static void main(String args[]) {&lt;br /&gt;
        Runnable doCreateAndShowGUI = new Runnable() {&lt;br /&gt;
            public void run() {&lt;br /&gt;
                createAndShowGUI();&lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
        SwingUtilities.invokeLater(doCreateAndShowGUI);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change Look and feel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/*&lt;br /&gt;
Definitive Guide to Swing for Java 2, Second Edition&lt;br /&gt;
By John Zukowski     &lt;br /&gt;
ISBN: 1-893115-78-X&lt;br /&gt;
Publisher: APress&lt;br /&gt;
*/&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.DefaultComboBoxModel;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JOptionPane;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
import javax.swing.UIDefaults;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
public class ChangeLook {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    final JFrame frame = new JFrame(&amp;quot;Change Look&amp;quot;);&lt;br /&gt;
    ActionListener actionListener = new ActionListener() {&lt;br /&gt;
      public void actionPerformed(ActionEvent actionEvent) {&lt;br /&gt;
        Object source = actionEvent.getSource();&lt;br /&gt;
        String lafClassName = null;&lt;br /&gt;
        if (source instanceof JComboBox) {&lt;br /&gt;
          JComboBox comboBox = (JComboBox) source;&lt;br /&gt;
          lafClassName = (String) comboBox.getSelectedItem();&lt;br /&gt;
        } else if (source instanceof JButton) {&lt;br /&gt;
          lafClassName = actionEvent.getActionCommand();&lt;br /&gt;
        }&lt;br /&gt;
        if (lafClassName != null) {&lt;br /&gt;
          final String finalLafClassName = lafClassName;&lt;br /&gt;
          Runnable runnable = new Runnable() {&lt;br /&gt;
            public void run() {&lt;br /&gt;
              try {&lt;br /&gt;
                UIManager.setLookAndFeel(finalLafClassName);&lt;br /&gt;
                SwingUtilities.updateComponentTreeUI(frame);&lt;br /&gt;
              } catch (Exception exception) {&lt;br /&gt;
                JOptionPane.showMessageDialog(frame,&lt;br /&gt;
                    &amp;quot;Can&amp;quot;t change look and feel&amp;quot;,&lt;br /&gt;
                    &amp;quot;Invalid PLAF&amp;quot;,&lt;br /&gt;
                    JOptionPane.ERROR_MESSAGE);&lt;br /&gt;
              }&lt;br /&gt;
            }&lt;br /&gt;
          };&lt;br /&gt;
          SwingUtilities.invokeLater(runnable);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    Object newSettings[] = { &amp;quot;Button.background&amp;quot;, Color.pink,&lt;br /&gt;
        &amp;quot;Button.foreground&amp;quot;, Color.magenta };&lt;br /&gt;
    UIDefaults defaults = UIManager.getDefaults();&lt;br /&gt;
    defaults.putDefaults(newSettings);&lt;br /&gt;
    UIManager.LookAndFeelInfo looks[] = UIManager&lt;br /&gt;
        .getInstalledLookAndFeels();&lt;br /&gt;
    DefaultComboBoxModel model = new DefaultComboBoxModel();&lt;br /&gt;
    JComboBox comboBox = new JComboBox(model);&lt;br /&gt;
    JPanel panel = new JPanel();&lt;br /&gt;
    for (int i = 0, n = looks.length; i &amp;lt; n; i++) {&lt;br /&gt;
      JButton button = new JButton(looks[i].getName());&lt;br /&gt;
      model.addElement(looks[i].getClassName());&lt;br /&gt;
      button.setActionCommand(looks[i].getClassName());&lt;br /&gt;
      button.addActionListener(actionListener);&lt;br /&gt;
      panel.add(button);&lt;br /&gt;
    }&lt;br /&gt;
    comboBox.addActionListener(actionListener);&lt;br /&gt;
    Container contentPane = frame.getContentPane();&lt;br /&gt;
    contentPane.add(comboBox, BorderLayout.NORTH);&lt;br /&gt;
    contentPane.add(panel, BorderLayout.SOUTH);&lt;br /&gt;
    frame.setSize(350, 150);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Change the look and feel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
public class PlafTest extends JPanel implements ActionListener {&lt;br /&gt;
  private JButton metalButton = new JButton(&amp;quot;Metal&amp;quot;);&lt;br /&gt;
  private JButton motifButton = new JButton(&amp;quot;Motif&amp;quot;);&lt;br /&gt;
  private JButton windowsButton = new JButton(&amp;quot;Windows&amp;quot;);&lt;br /&gt;
  public PlafTest() {&lt;br /&gt;
    add(metalButton);&lt;br /&gt;
    add(motifButton);&lt;br /&gt;
    add(windowsButton);&lt;br /&gt;
    metalButton.addActionListener(this);&lt;br /&gt;
    motifButton.addActionListener(this);&lt;br /&gt;
    windowsButton.addActionListener(this);&lt;br /&gt;
  }&lt;br /&gt;
  public void actionPerformed(ActionEvent evt) {&lt;br /&gt;
    Object source = evt.getSource();&lt;br /&gt;
    String plaf = &amp;quot;&amp;quot;;&lt;br /&gt;
    if (source == metalButton)&lt;br /&gt;
      plaf = &amp;quot;javax.swing.plaf.metal.MetalLookAndFeel&amp;quot;;&lt;br /&gt;
    else if (source == motifButton)&lt;br /&gt;
      plaf = &amp;quot;com.sun.java.swing.plaf.motif.MotifLookAndFeel&amp;quot;;&lt;br /&gt;
    else if (source == windowsButton)&lt;br /&gt;
      plaf = &amp;quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&amp;quot;;&lt;br /&gt;
    try {&lt;br /&gt;
      UIManager.setLookAndFeel(plaf);&lt;br /&gt;
      SwingUtilities.updateComponentTreeUI(this);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setTitle(&amp;quot;PlafTest&amp;quot;);&lt;br /&gt;
    frame.setSize(300, 200);&lt;br /&gt;
    frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    Container contentPane = frame.getContentPane();&lt;br /&gt;
    contentPane.add(new PlafTest());&lt;br /&gt;
    frame.show();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Default look and feel can be set in a file called &amp;quot;swing.properties&amp;quot; located in the &amp;quot;&amp;lt;JAVAHOME&amp;gt;/lib&amp;quot; directory. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
# Specify the default look and feel&lt;br /&gt;
swing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get Installed Look And Feels ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
public class ListPlafs {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    UIManager.LookAndFeelInfo plaf[] = UIManager.getInstalledLookAndFeels();&lt;br /&gt;
    for (int i = 0, n = plaf.length; i &amp;lt; n; i++) {&lt;br /&gt;
      System.out.println(&amp;quot;Name: &amp;quot; + plaf[i].getName());&lt;br /&gt;
      System.out.println(&amp;quot;  Class name: &amp;quot; + plaf[i].getClassName());&lt;br /&gt;
    }&lt;br /&gt;
    System.exit(0);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Get Swing Properties ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import javax.swing.JMenu;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
public class GetIt {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    JMenu it = new JMenu();&lt;br /&gt;
    String classID = it.getUIClassID();&lt;br /&gt;
    System.out.println(classID);&lt;br /&gt;
    String className = (String) UIManager.get(classID);&lt;br /&gt;
    System.out.println(className);&lt;br /&gt;
    Class.forName(className);&lt;br /&gt;
    System.out.println(System.getProperty(&amp;quot;swing.defaultlaf&amp;quot;));&lt;br /&gt;
    System.out.println(System.getProperty(&amp;quot;swing.auxiliarylaf&amp;quot;));&lt;br /&gt;
    System.out.println(System.getProperty(&amp;quot;swing.plaf.multiplexinglaf&amp;quot;));&lt;br /&gt;
    System.out.println(System.getProperty(&amp;quot;swing.installedlafs&amp;quot;));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting and Setting a Look and Feel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import javax.swing.LookAndFeel;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv)throws Exception {&lt;br /&gt;
    // Get the currently installed look and feel&lt;br /&gt;
    LookAndFeel lf = UIManager.getLookAndFeel();&lt;br /&gt;
    UIManager.setLookAndFeel(&amp;quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting and Setting a Native Look and Feel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String nativeLF = UIManager.getSystemLookAndFeelClassName();&lt;br /&gt;
    // Install the look and feel&lt;br /&gt;
    UIManager.setLookAndFeel(nativeLF);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Highlighted Button ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import java.awt.AlphaComposite;&lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.FlowLayout;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.RadialGradientPaint;&lt;br /&gt;
import java.awt.geom.Point2D;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
/*&lt;br /&gt;
 * HighlightedButton.java&lt;br /&gt;
 *&lt;br /&gt;
 * Created on May 1, 2007, 3:45 PM&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright (c) 2007, Sun Microsystems, Inc&lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   * Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *   * Redistributions in binary form must reproduce the above&lt;br /&gt;
 *     copyright notice, this list of conditions and the following&lt;br /&gt;
 *     disclaimer in the documentation and/or other materials provided&lt;br /&gt;
 *     with the distribution.&lt;br /&gt;
 *   * Neither the name of the TimingFramework project nor the names of its&lt;br /&gt;
 *     contributors may be used to endorse or promote products derived&lt;br /&gt;
 *     from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&lt;br /&gt;
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&lt;br /&gt;
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&lt;br /&gt;
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&lt;br /&gt;
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&lt;br /&gt;
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&lt;br /&gt;
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&lt;br /&gt;
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
/**&lt;br /&gt;
 * &lt;br /&gt;
 * @author Chet&lt;br /&gt;
 */&lt;br /&gt;
public class HighlightedButton extends JButton {&lt;br /&gt;
  static final int HIGHLIGHT_SIZE = 18;&lt;br /&gt;
  BufferedImage highlight = new BufferedImage(HIGHLIGHT_SIZE, HIGHLIGHT_SIZE,&lt;br /&gt;
      BufferedImage.TYPE_INT_ARGB);&lt;br /&gt;
  /**&lt;br /&gt;
   * Creates a new instance of HighlightedButton&lt;br /&gt;
   */&lt;br /&gt;
  public HighlightedButton(String label) {&lt;br /&gt;
    super(label);&lt;br /&gt;
    // Get the Graphics for the image&lt;br /&gt;
    Graphics2D g2d = highlight.createGraphics();&lt;br /&gt;
    // Erase the image with a transparent background&lt;br /&gt;
    g2d.setComposite(AlphaComposite.Clear);&lt;br /&gt;
    g2d.fillRect(0, 0, HIGHLIGHT_SIZE, HIGHLIGHT_SIZE);&lt;br /&gt;
    g2d.setComposite(AlphaComposite.SrcOver);&lt;br /&gt;
    // Draw the highlight&lt;br /&gt;
    Point2D center = new Point2D.Float((float) HIGHLIGHT_SIZE / 2.0f, (float) HIGHLIGHT_SIZE / 2.0f);&lt;br /&gt;
    float radius = (float) HIGHLIGHT_SIZE / 2.0f;&lt;br /&gt;
    float[] dist = { 0.0f, .85f };&lt;br /&gt;
    Color[] colors = { Color.white, new Color(255, 255, 255, 0) };&lt;br /&gt;
    RadialGradientPaint paint = new RadialGradientPaint(center, radius, dist, colors);&lt;br /&gt;
    g2d.setPaint(paint);&lt;br /&gt;
    g2d.fillOval(0, 0, HIGHLIGHT_SIZE, HIGHLIGHT_SIZE);&lt;br /&gt;
    g2d.dispose();&lt;br /&gt;
  }&lt;br /&gt;
  @Override&lt;br /&gt;
  protected void paintComponent(Graphics g) {&lt;br /&gt;
    super.paintComponent(g);&lt;br /&gt;
    g.drawImage(highlight, getWidth() / 4, getHeight() / 4, null);&lt;br /&gt;
  }&lt;br /&gt;
  private static void createAndShowGUI() {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.getContentPane().setLayout(new FlowLayout());&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setSize(100, 100);&lt;br /&gt;
    f.add(new JButton(&amp;quot;Standard&amp;quot;));&lt;br /&gt;
    f.add(new HighlightedButton(&amp;quot;Highlighted&amp;quot;));&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Runnable doCreateAndShowGUI = new Runnable() {&lt;br /&gt;
      public void run() {&lt;br /&gt;
        createAndShowGUI();&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
    SwingUtilities.invokeLater(doCreateAndShowGUI);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Look and feel string ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.event.KeyEvent;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  final static JLabel l = new JLabel();&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    selectLookAndFeel();&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JPanel pane = new JPanel();&lt;br /&gt;
    pane.setLayout(new BorderLayout());&lt;br /&gt;
    JButton b = new JButton(&amp;quot;Press Me!&amp;quot;);&lt;br /&gt;
    b.setMnemonic(KeyEvent.VK_P);&lt;br /&gt;
    b.setToolTipText(&amp;quot;Click this button to see a message.&amp;quot;);&lt;br /&gt;
    pane.add(&amp;quot;North&amp;quot;, b);&lt;br /&gt;
    l.setLabelFor(b);&lt;br /&gt;
    pane.add(&amp;quot;South&amp;quot;, l);&lt;br /&gt;
    f.setContentPane(pane);&lt;br /&gt;
    f.setSize(300, 100);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  private static void selectLookAndFeel() {&lt;br /&gt;
    String actualName = UIManager.getCrossPlatformLookAndFeelClassName();&lt;br /&gt;
    //actualName = UIManager.getSystemLookAndFeelClassName();&lt;br /&gt;
    //actualName = &amp;quot;com.sun.java.swing.plaf.mac.MacLookAndFeel&amp;quot;;&lt;br /&gt;
    //actualName = &amp;quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&amp;quot;;&lt;br /&gt;
    //actualName = &amp;quot;com.sun.java.swing.plaf.motif.MotifLookAndFeel&amp;quot;;&lt;br /&gt;
    try {&lt;br /&gt;
      UIManager.setLookAndFeel(actualName);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      System.err.println(&amp;quot;Could not get &amp;quot; + actualName + &amp;quot; look and feel for some reason.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Retrieve the cross-platform look and feel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String javaLF = UIManager.getCrossPlatformLookAndFeelClassName();&lt;br /&gt;
    // Install the look and feel&lt;br /&gt;
    UIManager.setLookAndFeel(javaLF);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selecting different looks and feels ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
// : c14:LookAndFeel.java&lt;br /&gt;
// Selecting different looks &amp;amp; feels.&lt;br /&gt;
// From &amp;quot;Thinking in Java, 3rd ed.&amp;quot; (c) Bruce Eckel 2002&lt;br /&gt;
// www.BruceEckel.ru. See copyright notice in CopyRight.txt.&lt;br /&gt;
import java.awt.ruponent;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.FlowLayout;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JCheckBox;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JRadioButton;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
public class LookAndFeel extends JFrame {&lt;br /&gt;
  private String[] choices = { &amp;quot;eeny&amp;quot;, &amp;quot;meeny&amp;quot;, &amp;quot;Minnie&amp;quot;, &amp;quot;Mickey&amp;quot;, &amp;quot;Moe&amp;quot;,&lt;br /&gt;
      &amp;quot;Larry&amp;quot;, &amp;quot;Curly&amp;quot; };&lt;br /&gt;
  private Component[] samples = { new JButton(&amp;quot;JButton&amp;quot;),&lt;br /&gt;
      new JTextField(&amp;quot;JTextField&amp;quot;), new JLabel(&amp;quot;JLabel&amp;quot;),&lt;br /&gt;
      new JCheckBox(&amp;quot;JCheckBox&amp;quot;), new JRadioButton(&amp;quot;Radio&amp;quot;),&lt;br /&gt;
      new JComboBox(choices), new JList(choices), };&lt;br /&gt;
  public LookAndFeel() {&lt;br /&gt;
    super(&amp;quot;Look And Feel&amp;quot;);&lt;br /&gt;
    Container cp = getContentPane();&lt;br /&gt;
    cp.setLayout(new FlowLayout());&lt;br /&gt;
    for (int i = 0; i &amp;lt; samples.length; i++)&lt;br /&gt;
      cp.add(samples[i]);&lt;br /&gt;
  }&lt;br /&gt;
  private static void usageError() {&lt;br /&gt;
    System.out.println(&amp;quot;Usage:LookAndFeel [cross|system|motif]&amp;quot;);&lt;br /&gt;
    System.exit(1);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    if (args.length == 0)&lt;br /&gt;
      usageError();&lt;br /&gt;
    if (args[0].equals(&amp;quot;cross&amp;quot;)) {&lt;br /&gt;
      try {&lt;br /&gt;
        UIManager.setLookAndFeel(UIManager&lt;br /&gt;
            .getCrossPlatformLookAndFeelClassName());&lt;br /&gt;
      } catch (Exception e) {&lt;br /&gt;
        e.printStackTrace();&lt;br /&gt;
      }&lt;br /&gt;
    } else if (args[0].equals(&amp;quot;system&amp;quot;)) {&lt;br /&gt;
      try {&lt;br /&gt;
        UIManager.setLookAndFeel(UIManager&lt;br /&gt;
            .getSystemLookAndFeelClassName());&lt;br /&gt;
      } catch (Exception e) {&lt;br /&gt;
        e.printStackTrace();&lt;br /&gt;
      }&lt;br /&gt;
    } else if (args[0].equals(&amp;quot;motif&amp;quot;)) {&lt;br /&gt;
      try {&lt;br /&gt;
        UIManager.setLookAndFeel(&amp;quot;com.sun.java.&amp;quot;&lt;br /&gt;
            + &amp;quot;swing.plaf.motif.MotifLookAndFeel&amp;quot;);&lt;br /&gt;
      } catch (Exception e) {&lt;br /&gt;
        e.printStackTrace();&lt;br /&gt;
      }&lt;br /&gt;
    } else&lt;br /&gt;
      usageError();&lt;br /&gt;
    // Note the look &amp;amp; feel must be set before&lt;br /&gt;
    // any components are created.&lt;br /&gt;
    run(new LookAndFeel(), 300, 200);&lt;br /&gt;
  }&lt;br /&gt;
  public static void run(JFrame frame, int width, int height) {&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(width, height);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
} ///:~&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Set the look and feel using a system property on the command line ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel MyApp&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simple look and feel Example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
/* From http://java.sun.ru/docs/books/tutorial/index.html */&lt;br /&gt;
/*&lt;br /&gt;
 * @(#)SimpleExample.java  1.23 99/04/23&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright (c) 1997-1999 by Sun Microsystems, Inc. All Rights Reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Sun grants you (&amp;quot;Licensee&amp;quot;) a non-exclusive, royalty free, license to use,&lt;br /&gt;
 * modify and redistribute this software in source and binary code form,&lt;br /&gt;
 * provided that i) this copyright notice and license appear on all copies of&lt;br /&gt;
 * the software; and ii) Licensee does not utilize the software in a manner&lt;br /&gt;
 * which is disparaging to Sun.&lt;br /&gt;
 * &lt;br /&gt;
 * This software is provided &amp;quot;AS IS,&amp;quot; without a warranty of any kind. ALL&lt;br /&gt;
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY&lt;br /&gt;
 * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR&lt;br /&gt;
 * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE&lt;br /&gt;
 * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING&lt;br /&gt;
 * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS&lt;br /&gt;
 * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,&lt;br /&gt;
 * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER&lt;br /&gt;
 * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF&lt;br /&gt;
 * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE&lt;br /&gt;
 * POSSIBILITY OF SUCH DAMAGES.&lt;br /&gt;
 * &lt;br /&gt;
 * This software is not designed or intended for use in on-line control of&lt;br /&gt;
 * aircraft, air traffic, aircraft navigation or aircraft communications; or in&lt;br /&gt;
 * the design, construction, operation or maintenance of any nuclear&lt;br /&gt;
 * facility. Licensee represents and warrants that it will not use or&lt;br /&gt;
 * redistribute the Software for such purposes.&lt;br /&gt;
 */&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import javax.swing.ButtonGroup;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JRadioButton;&lt;br /&gt;
import javax.swing.SwingUtilities;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
/**&lt;br /&gt;
 * An application that displays a JButton and several JRadioButtons.&lt;br /&gt;
 * The JRadioButtons determine the look and feel used by the application.&lt;br /&gt;
 */&lt;br /&gt;
public class SimplelookandfeelExample extends JPanel {&lt;br /&gt;
    static JFrame frame;&lt;br /&gt;
    static String metal= &amp;quot;Metal&amp;quot;;&lt;br /&gt;
    static String metalClassName = &amp;quot;javax.swing.plaf.metal.MetalLookAndFeel&amp;quot;;&lt;br /&gt;
    static String motif = &amp;quot;Motif&amp;quot;;&lt;br /&gt;
    static String motifClassName = &lt;br /&gt;
      &amp;quot;com.sun.java.swing.plaf.motif.MotifLookAndFeel&amp;quot;;&lt;br /&gt;
    static String windows = &amp;quot;Windows&amp;quot;;&lt;br /&gt;
    static String windowsClassName = &lt;br /&gt;
      &amp;quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&amp;quot;;&lt;br /&gt;
    JRadioButton metalButton, motifButton, windowsButton;&lt;br /&gt;
    public SimplelookandfeelExample() {&lt;br /&gt;
  // Create the buttons.&lt;br /&gt;
  JButton button = new JButton(&amp;quot;Hello, world&amp;quot;);&lt;br /&gt;
        button.setMnemonic(&amp;quot;h&amp;quot;); //for looks only; button does nada&lt;br /&gt;
  metalButton = new JRadioButton(metal);&lt;br /&gt;
        metalButton.setMnemonic(&amp;quot;o&amp;quot;); &lt;br /&gt;
  metalButton.setActionCommand(metalClassName);&lt;br /&gt;
  motifButton = new JRadioButton(motif);&lt;br /&gt;
        motifButton.setMnemonic(&amp;quot;m&amp;quot;); &lt;br /&gt;
  motifButton.setActionCommand(motifClassName);&lt;br /&gt;
  windowsButton = new JRadioButton(windows);&lt;br /&gt;
        windowsButton.setMnemonic(&amp;quot;w&amp;quot;); &lt;br /&gt;
  windowsButton.setActionCommand(windowsClassName);&lt;br /&gt;
  // Group the radio buttons.&lt;br /&gt;
  ButtonGroup group = new ButtonGroup();&lt;br /&gt;
  group.add(metalButton);&lt;br /&gt;
  group.add(motifButton);&lt;br /&gt;
  group.add(windowsButton);&lt;br /&gt;
        // Register a listener for the radio buttons.&lt;br /&gt;
  RadioListener myListener = new RadioListener();&lt;br /&gt;
  metalButton.addActionListener(myListener);&lt;br /&gt;
  motifButton.addActionListener(myListener);&lt;br /&gt;
  windowsButton.addActionListener(myListener);&lt;br /&gt;
  add(button);&lt;br /&gt;
  add(metalButton);&lt;br /&gt;
  add(motifButton);&lt;br /&gt;
  add(windowsButton);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /** An ActionListener that listens to the radio buttons. */&lt;br /&gt;
    class RadioListener implements ActionListener {&lt;br /&gt;
  public void actionPerformed(ActionEvent e) {&lt;br /&gt;
      String lnfName = e.getActionCommand();&lt;br /&gt;
            try {&lt;br /&gt;
    UIManager.setLookAndFeel(lnfName);&lt;br /&gt;
    SwingUtilities.updateComponentTreeUI(frame);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
            } &lt;br /&gt;
      catch (Exception exc) {&lt;br /&gt;
    JRadioButton button = (JRadioButton)e.getSource();&lt;br /&gt;
    button.setEnabled(false);&lt;br /&gt;
    updateState();&lt;br /&gt;
                System.err.println(&amp;quot;Could not load LookAndFeel: &amp;quot; + lnfName);&lt;br /&gt;
            }&lt;br /&gt;
      &lt;br /&gt;
  }&lt;br /&gt;
    }&lt;br /&gt;
    public void updateState() {&lt;br /&gt;
   String lnfName = UIManager.getLookAndFeel().getClass().getName();&lt;br /&gt;
   if (lnfName.indexOf(metal) &amp;gt;= 0) {&lt;br /&gt;
       metalButton.setSelected(true);&lt;br /&gt;
   } else if (lnfName.indexOf(windows) &amp;gt;= 0) {&lt;br /&gt;
       windowsButton.setSelected(true);&lt;br /&gt;
   } else if (lnfName.indexOf(motif) &amp;gt;= 0) {&lt;br /&gt;
       motifButton.setSelected(true);&lt;br /&gt;
   } else {&lt;br /&gt;
       System.err.println(&amp;quot;SimpleExample is using an unknown L&amp;amp;F: &amp;quot; + lnfName);&lt;br /&gt;
   }&lt;br /&gt;
    }&lt;br /&gt;
    public static void main(String s[]) {&lt;br /&gt;
  /* &lt;br /&gt;
     NOTE: By default, the look and feel will be set to the&lt;br /&gt;
     Cross Platform Look and Feel (which is currently Metal).&lt;br /&gt;
     The user may someday be able to override the default&lt;br /&gt;
     via a system property. If you as the developer want to&lt;br /&gt;
     be sure that a particular L&amp;amp;F is set, you can do so&lt;br /&gt;
     by calling UIManager.setLookAndFeel(). For example, the&lt;br /&gt;
     first code snippet below forcibly sets the UI to be the&lt;br /&gt;
     System Look and Feel. The second code snippet forcibly&lt;br /&gt;
     sets the look and feel to the Cross Platform L&amp;amp;F.&lt;br /&gt;
     Snippet 1:&lt;br /&gt;
        try {&lt;br /&gt;
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());&lt;br /&gt;
        } catch (Exception exc) {&lt;br /&gt;
            System.err.println(&amp;quot;Error loading L&amp;amp;F: &amp;quot; + exc);&lt;br /&gt;
        }&lt;br /&gt;
     Snippet 2:&lt;br /&gt;
        try {&lt;br /&gt;
            UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());&lt;br /&gt;
        } catch (Exception exc) {&lt;br /&gt;
            System.err.println(&amp;quot;Error loading L&amp;amp;F: &amp;quot; + exc);&lt;br /&gt;
              }&lt;br /&gt;
  */&lt;br /&gt;
  SimpleExample panel = new SimpleExample();&lt;br /&gt;
  &lt;br /&gt;
  frame = new JFrame(&amp;quot;SimpleExample&amp;quot;);&lt;br /&gt;
  frame.addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {System.exit(0);}&lt;br /&gt;
  });&lt;br /&gt;
  frame.getContentPane().add(&amp;quot;Center&amp;quot;, panel);&lt;br /&gt;
  frame.pack();&lt;br /&gt;
  frame.setVisible(true);&lt;br /&gt;
  &lt;br /&gt;
  panel.updateState();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>