Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

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