MainClass.java Source code

Java tutorial

Introduction

Here is the source code for MainClass.java

Source

import java.awt.Event;

import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.KeyStroke;

public class MainClass extends JFrame {

    public MainClass() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        setJMenuBar(menuBar);

        JMenu fileMenu = new JMenu("File");
        JMenu elementMenu = new JMenu("Elements");
        fileMenu.setMnemonic('F');
        elementMenu.setMnemonic('E');

        // Construct the file pull down menu
        newItem = fileMenu.add("New");
        openItem = fileMenu.add("Open");
        closeItem = fileMenu.add("Close");
        fileMenu.addSeparator();
        saveItem = fileMenu.add("Save");
        saveAsItem = fileMenu.add("Save As...");

        JMenu colorMenu = new JMenu("Color");

        fileMenu.addSeparator();
        printItem = fileMenu.add("Print");

        newItem.setAccelerator(KeyStroke.getKeyStroke('N', Event.CTRL_MASK));
        openItem.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
        saveItem.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
        printItem.setAccelerator(KeyStroke.getKeyStroke('P', Event.CTRL_MASK));

        elementMenu.add(lineItem = new JRadioButtonMenuItem("Line", true));
        elementMenu.add(rectangleItem = new JRadioButtonMenuItem("Rectangle", false));
        elementMenu.add(circleItem = new JRadioButtonMenuItem("Circle", false));
        elementMenu.add(curveItem = new JRadioButtonMenuItem("Curve", false));
        ButtonGroup types = new ButtonGroup();
        types.add(lineItem);
        types.add(rectangleItem);
        types.add(circleItem);
        types.add(curveItem);

        lineItem.setAccelerator(KeyStroke.getKeyStroke('L', Event.CTRL_MASK));
        rectangleItem.setAccelerator(KeyStroke.getKeyStroke('E', Event.CTRL_MASK));
        circleItem.setAccelerator(KeyStroke.getKeyStroke('I', Event.CTRL_MASK));
        curveItem.setAccelerator(KeyStroke.getKeyStroke('V', Event.CTRL_MASK));

        elementMenu.addSeparator();

        elementMenu.add(colorMenu); // Add the sub-menu
        colorMenu.add(redItem = new JCheckBoxMenuItem("Red", false));
        colorMenu.add(yellowItem = new JCheckBoxMenuItem("Yellow", false));
        colorMenu.add(greenItem = new JCheckBoxMenuItem("Green", false));
        colorMenu.add(blueItem = new JCheckBoxMenuItem("Blue", true));

        // Add element color accelerators
        redItem.setAccelerator(KeyStroke.getKeyStroke('R', Event.CTRL_MASK));
        yellowItem.setAccelerator(KeyStroke.getKeyStroke('Y', Event.CTRL_MASK));
        greenItem.setAccelerator(KeyStroke.getKeyStroke('G', Event.CTRL_MASK));
        blueItem.setAccelerator(KeyStroke.getKeyStroke('B', Event.CTRL_MASK));

        menuBar.add(fileMenu);
        menuBar.add(elementMenu);
    }

    private JMenuBar menuBar = new JMenuBar();

    // File menu items
    private JMenuItem newItem, openItem, closeItem, saveItem, saveAsItem, printItem;

    // Element menu items
    private JRadioButtonMenuItem lineItem, rectangleItem, circleItem, curveItem, textItem;

    private JCheckBoxMenuItem redItem, yellowItem, greenItem, blueItem;

    public static void main(String[] args) {
        JFrame aWindow = new MainClass();
        aWindow.setSize(200, 200);
        aWindow.setVisible(true);
    }
}