Mega Code Archive

 
Categories / Java / Swing JFC
 

How to change the look and feel of Swing applications

import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class Main extends JFrame {   private String strings[] = { "Metal", "Motif", "Windows" };   private UIManager.LookAndFeelInfo looks[] = UIManager.getInstalledLookAndFeels();   private JRadioButton radio[] = new JRadioButton[strings.length];   private JButton button = new JButton("JButton");   private JLabel label= new JLabel("This is a Metal look-and-feel", SwingConstants.CENTER);   private JComboBox comboBox = new JComboBox(strings);   public Main() {     JPanel northPanel = new JPanel();     northPanel.setLayout(new GridLayout(3, 1, 0, 5));     northPanel.add(label);         northPanel.add(button);         northPanel.add(comboBox);     add(northPanel, BorderLayout.NORTH);     JPanel southPanel = new JPanel();          ItemHandler handler = new ItemHandler();     southPanel.setLayout(new GridLayout(1, radio.length));     ButtonGroup group = new ButtonGroup();     for (int i = 0; i < radio.length; i++) {       radio[i] = new JRadioButton(strings[i]);       radio[i].addItemListener(handler);       group.add(radio[i]);       southPanel.add(radio[i]);     }     add(southPanel, BorderLayout.SOUTH);          setSize(300, 200);     setVisible(true);     radio[0].setSelected(true);     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   }   private void changeTheLookAndFeel(int value) {     try {       UIManager.setLookAndFeel(looks[value].getClassName());       SwingUtilities.updateComponentTreeUI(this);     } catch (Exception e) {       e.printStackTrace();     }   }   public static void main(String args[]) {     Main dx = new Main();   }   private class ItemHandler implements ItemListener {     public void itemStateChanged(ItemEvent e) {       for (int i = 0; i < radio.length; i++)         if (radio[i].isSelected()) {           label.setText("This is a " + strings[i] + " look-and-feel");           comboBox.setSelectedIndex(i);           changeTheLookAndFeel(i);         }     }   } }