How to change the look and feel of Swing applications : UI « Swing JFC « Java






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);
        }
    }
  }
}

   
    
  








Related examples in the same category

1.Setting a UI Default Value That Is Created When Fetched
2.Getting the Default Values for a Look and Feel
3.Setting a UI Default Value That Is Created at Every Fetch
4.Replaces the standard scrollbar UI with a custom oneReplaces the standard scrollbar UI with a custom one
5.UIManager defaultsUIManager defaults
6.Retrieve information of all available UIManager defaults
7.Get default values for Swing-based user interface
8.UIManager resources to tweak the look of applicationsUIManager resources to tweak the look of applications
9.Displays the contents of the UIDefaults hash map for the current look and feel.