Java Code Examples for java.awt.event.KeyEvent#VK_P

The following examples show how to use java.awt.event.KeyEvent#VK_P . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ScreenCaptureAction.java    From pentaho-reporting with GNU Lesser General Public License v2.1 5 votes vote down vote up
public boolean postProcessKeyEvent( final KeyEvent e ) {
  if ( e.getID() == KeyEvent.KEY_PRESSED ) {
    final int menuKeyMask = getMenuKeyMask();
    if ( e.getKeyCode() == KeyEvent.VK_P &&
      ( e.getModifiers() & menuKeyMask ) == menuKeyMask ) {
      saveScreenShot( e.getModifiers() );
      return true;
    }
  }
  return false;
}
 
Example 2
Source File: KeyboardSupport.java    From CrossMobile with GNU Lesser General Public License v3.0 5 votes vote down vote up
public static void reactToReleaseEvent(CEventCallback callback, int vk_event, int modifier) {
    switch (vk_event) {
        case KeyEvent.VK_CONTROL:
            if ((mask & MULTITOUCH.mask) != 0)
                callback.endMultiTouch();
            break;
        case KeyEvent.VK_B:
        case KeyEvent.VK_BACK_SPACE:
            if ((mask & BACK.mask) != 0)
                callback.back();
            break;
        case KeyEvent.VK_P:
        case KeyEvent.VK_SPACE:
            if ((mask & PAUSE.mask) != 0)
                ((DesktopLifecycleBridge) Native.lifecycle()).toggleActivation();
            break;
        case KeyEvent.VK_ESCAPE:
        case KeyEvent.VK_Q:
            if ((mask & QUIT.mask) != 0)
                callback.powerOff();
            break;
        case KeyEvent.VK_M:
            if (modifier == KeyEvent.CTRL_MASK)
                memoryWarning();
            break;
        case KeyEvent.VK_H:
        case KeyEvent.VK_HOME:
            if ((mask & HOME.mask) != 0)
                callback.home();
            break;
        case KeyEvent.VK_LEFT:
            if ((mask & ROTATE.mask) != 0)
                callback.rotateLeft();
            break;
        case KeyEvent.VK_RIGHT:
            if ((mask & ROTATE.mask) != 0)
                callback.rotateRight();
            break;
    }
}
 
Example 3
Source File: KeyCodeToChar.java    From Repeat with Apache License 2.0 4 votes vote down vote up
private static String getUpperCaseAlphaChar(int code) {
	switch (code) {
	case KeyEvent.VK_Q:
		return "Q";
	case KeyEvent.VK_W:
		return "W";
	case KeyEvent.VK_E:
		return "E";
	case KeyEvent.VK_R:
		return "R";
	case KeyEvent.VK_T:
		return "T";
	case KeyEvent.VK_Y:
		return "Y";
	case KeyEvent.VK_U:
		return "U";
	case KeyEvent.VK_I:
		return "I";
	case KeyEvent.VK_O:
		return "O";
	case KeyEvent.VK_P:
		return "P";
	case KeyEvent.VK_A:
		return "A";
	case KeyEvent.VK_S:
		return "S";
	case KeyEvent.VK_D:
		return "D";
	case KeyEvent.VK_F:
		return "F";
	case KeyEvent.VK_G:
		return "G";
	case KeyEvent.VK_H:
		return "H";
	case KeyEvent.VK_J:
		return "J";
	case KeyEvent.VK_K:
		return "K";
	case KeyEvent.VK_L:
		return "L";
	case KeyEvent.VK_Z:
		return "Z";
	case KeyEvent.VK_X:
		return "X";
	case KeyEvent.VK_C:
		return "C";
	case KeyEvent.VK_V:
		return "V";
	case KeyEvent.VK_B:
		return "B";
	case KeyEvent.VK_N:
		return "N";
	case KeyEvent.VK_M:
		return "M";
	default:
		return "";
	}
}
 
Example 4
Source File: LayoutAction.java    From PIPE with MIT License 4 votes vote down vote up
public LayoutAction(PipeApplicationController pipeApplicationController, PipeApplicationView applicationView) {
    super("Layout", "Layout", KeyEvent.VK_P, InputEvent.ALT_DOWN_MASK);
    this.pipeApplicationController = pipeApplicationController;
    this.applicationView = applicationView;
}
 
Example 5
Source File: PrintAction.java    From PIPE with MIT License 4 votes vote down vote up
public PrintAction() {
    super("Print", "Print", KeyEvent.VK_P, InputEvent.META_DOWN_MASK);
}
 
Example 6
Source File: PlaceAction.java    From PIPE with MIT License 4 votes vote down vote up
public PlaceAction(PipeApplicationModel applicationModel) {
    super("Place", "Add a place", KeyEvent.VK_P, InputEvent.ALT_DOWN_MASK, applicationModel);
}
 
Example 7
Source File: Commander.java    From Scripts with GNU General Public License v3.0 4 votes vote down vote up
@Override
public void keyPressed(final KeyEvent ke) {

	final int key = ke.getKeyCode();
	final Object source = ke.getSource();
	final boolean meta = (ke.getModifiers() & Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()) != 0;
	final boolean metaShift = meta && ke.isShiftDown();

	// Close if Esc, Ctrl+W or Cmd+W
	if (key == KeyEvent.VK_ESCAPE || (key == KeyEvent.VK_W && meta)) {
		quit();

		// Trigger Menu accelerators
	} else if (metaShift) {
		if (key == KeyEvent.VK_C) // Enter/Exit Console
			toggleConsoleMode();
		else if (key == KeyEvent.VK_G) // Go To...
			changeDirectory("");
		else if (!isConsoleMode() && key == KeyEvent.VK_R) // Reveal Path
			Utils.revealFile(path);

	} else if (meta) {

		if (key == KeyEvent.VK_L) {
			prompt.requestFocusInWindow();
			prompt.selectAll();
		} else if (key == KeyEvent.VK_B) {
			activateTable();
		} else if (key == KeyEvent.VK_COMMA) {
			showOptionsDialog();
		} else if (key == KeyEvent.VK_S) {
			saveQuery();
		} else if (!isConsoleMode() && key == KeyEvent.VK_D) {
			addBookmark();
		} else if (!isConsoleMode() && key == KeyEvent.VK_P) {
			printList();
		} else if (!isConsoleMode() && key == KeyEvent.VK_R) {
			resetFileList("Contents reloaded...");
		}

	} else if (source == prompt) {

		// Up or down arrows pressed in prompt: Move the focus to list
		if (key == KeyEvent.VK_UP || key == KeyEvent.VK_DOWN) {
			activateTable();
		}

	} else if (source == table) {

		// Focus in list and left arrow key: move up in directory hierarchy
		if (key == KeyEvent.VK_LEFT) {
			selectParentDirectory(path);
			setSelectedItem(table.getSelectedRow());

			// Focus in list and right arrow key: List sub-directory
		} else if (key == KeyEvent.VK_RIGHT) {
			setSelectedItem(table.getSelectedRow());
			if (isFolder(selectedItem))
				selectSubDirectory(selectedItem);

			// Focus in list and enter: Open selected item
		} else if (key == KeyEvent.VK_ENTER) {
			ke.consume();
			setSelectedItem(table.getSelectedRow());
			openItem(selectedItem);

			// Focus in list and backspace: Switch focus back to prompt
		} else if (key == KeyEvent.VK_BACK_SPACE) {
			prompt.requestFocusInWindow();
			prompt.selectAll();

			// Focus in list and up/down arrow key: Loop through list
		} else if (key == KeyEvent.VK_UP) {
			if (table.getSelectedRow() == 0)
				table.setRowSelectionInterval(tableModel.getRowCount() - 1, tableModel.getRowCount() - 1);
		} else if (key == KeyEvent.VK_DOWN) {
			if (table.getSelectedRow() == tableModel.getRowCount() - 1)
				table.setRowSelectionInterval(0, 0);
		}

	}

}
 
Example 8
Source File: GrammarVizView.java    From grammarviz2_src with GNU General Public License v2.0 4 votes vote down vote up
/**
 * Build the application menu bar.
 */
private void buildMenuBar() {

  // Build the File menu.
  //
  //
  JMenu fileMenu = new JMenu("File");
  fileMenu.setMnemonic(KeyEvent.VK_F);
  fileMenu.getAccessibleContext().setAccessibleDescription("The file menu");
  // Open file item
  JMenuItem openFileItem = new JMenuItem("Select", KeyEvent.VK_O);
  openFileItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
  openFileItem.getAccessibleContext().setAccessibleDescription("Open a data file");
  openFileItem.setActionCommand(SELECT_FILE);
  openFileItem.addActionListener(this);
  fileMenu.add(openFileItem);
  // add a separator
  fileMenu.addSeparator();
  // an exit item
  JMenuItem exitItem = new JMenuItem("Exit", KeyEvent.VK_X);
  exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
  exitItem.getAccessibleContext().setAccessibleDescription("Exit from here");
  exitItem.addActionListener(this);
  fileMenu.add(exitItem);

  // Build the Options menu.
  //
  //
  JMenu settingsMenu = new JMenu("Settings");
  settingsMenu.setMnemonic(KeyEvent.VK_S);
  settingsMenu.getAccessibleContext().setAccessibleDescription("Settings menu");
  // an exit item
  JMenuItem optionsItem = new JMenuItem("GrammarViz options", KeyEvent.VK_P);
  optionsItem.setActionCommand(OPTIONS_MENU_ITEM);
  optionsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
  optionsItem.getAccessibleContext().setAccessibleDescription("Options");
  optionsItem.addActionListener(this);
  settingsMenu.add(optionsItem);

  // Build the About menu.
  JMenu helpMenu = new JMenu("Help");
  helpMenu.setMnemonic(KeyEvent.VK_F1);
  helpMenu.getAccessibleContext().setAccessibleDescription("Help & About");

  // a help item
  JMenuItem helpItem = new JMenuItem("Help", KeyEvent.VK_H);
  helpItem.getAccessibleContext().setAccessibleDescription("Get some help here.");
  exitItem.addActionListener(controller);
  helpMenu.add(helpItem);

  // an about item
  JMenuItem aboutItem = new JMenuItem("About", KeyEvent.VK_A);
  aboutItem.getAccessibleContext().setAccessibleDescription("About the app.");
  aboutItem.setActionCommand(ABOUT_MENU_ITEM);
  aboutItem.addActionListener(this);
  helpMenu.add(aboutItem);

  // make sure that controller is connected with Exit item
  //
  exitItem.addActionListener(controller);

  menuBar.add(fileMenu);
  menuBar.add(settingsMenu);
  menuBar.add(helpMenu);
}
 
Example 9
Source File: KeyToggler.java    From Any-Angle-Pathfinding with The Unlicense 4 votes vote down vote up
@Override
public void keyPressed(KeyEvent arg0) {
    switch(arg0.getKeyCode()) {
        case KeyEvent.VK_RIGHT :
            goRight(1, false);
            break;
        case KeyEvent.VK_LEFT :
            goLeft(1, false);
            break;
        case KeyEvent.VK_UP :
            goRight(1, true);
            break;
        case KeyEvent.VK_DOWN :
            goLeft(1, true);
            break;
        case KeyEvent.VK_PAGE_UP :
            goRight(10, false);
            break;
        case KeyEvent.VK_PAGE_DOWN :
            goLeft(10, false);
            break;
        case KeyEvent.VK_D :
            goRight(3, true);
            break;
        case KeyEvent.VK_A :
            goLeft(3, true);
            break;
        case KeyEvent.VK_W :
            goRight(5, true);
            break;
        case KeyEvent.VK_S :
            goLeft(5, true);
            break;
            

            // O: Go right one step + take screenshot, loops around
        case KeyEvent.VK_O :
            if (goRight(1, false))
                takeSnapShot();
            break;

            // P: Go right one step + take screenshot, stop at end
        case KeyEvent.VK_P :
            if (goRight(1, true))
                takeSnapShot();
            break;

            // L: Go right multiple steps + take screenshot, stop at end
        case KeyEvent.VK_L :
            if (goRight(13, true))
                takeSnapShot();
            break;
            // Esc: Close Window
        case KeyEvent.VK_ESCAPE :
            System.exit(0);
            break;
    }
}
 
Example 10
Source File: MainFrameKeyListener.java    From tankbattle with MIT License 4 votes vote down vote up
@Override
public void keyPressed(KeyEvent e) {
    RealTimeGameData data = gameContext.getRealTimeGameData();



    if (Boolean.TRUE.equals(data.getMapMakingFlag()) && e.getKeyCode() == KeyEvent.VK_C) {
        if (data.getCurrentStuff() == StuffTypeEnum.BRICK) {
            data.setCurrentStuff(StuffTypeEnum.IRON);
        } else if (data.getCurrentStuff() == StuffTypeEnum.IRON) {
            data.setCurrentStuff(StuffTypeEnum.WATER);
        } else if (data.getCurrentStuff() == StuffTypeEnum.WATER) {
            data.setCurrentStuff(StuffTypeEnum.INVALID);
        } else {
            data.setCurrentStuff(StuffTypeEnum.BRICK);
        }

    }


    if (e.getKeyCode() == KeyEvent.VK_P) { // 暂停
        gameEventService.gameEventStop(data);
    }

    data.getMyTanks().forEach(myTank -> {
        if (!myTank.getLive()) {
            data.keyPressedDirect(false, false, false, false);
        } else {
            if ((e.getKeyCode() == KeyEvent.VK_UP)) {
                myTank.setDirect(DirectionEnum.NORTH);
                data.keyPressedDirect(true, false, false, false);

            } else if ((e.getKeyCode() == KeyEvent.VK_DOWN) && myTank.getY() <= 580) {
                myTank.setDirect(DirectionEnum.SOUTH);
                data.keyPressedDirect(false, true, false, false);

            } else if ((e.getKeyCode() == KeyEvent.VK_LEFT) && myTank.getY() <= 580) {
                myTank.setDirect(DirectionEnum.WEST);
                data.keyPressedDirect(false, false, true, false);

            } else if ((e.getKeyCode() == KeyEvent.VK_RIGHT) && myTank.getY() <= 580) {
                myTank.setDirect(DirectionEnum.EAST);
                data.keyPressedDirect(false, false, false, true);

            }
            if (e.getKeyCode() == KeyEvent.VK_X && myTank.getY() <= 580) {
                if (myTank.getBullets().size() <= 1 && data.getMyBulletNum() > 0) {
                    data.setMyBulletNum(data.getMyBulletNum() - 1);
                    gameEventService.shot(myTank);
                }
            }
        }
    });

}
 
Example 11
Source File: KeyCodeToChar.java    From Repeat with Apache License 2.0 4 votes vote down vote up
private static String getLowerCaseAlphaChar(int code) {
	switch (code) {
	case KeyEvent.VK_Q:
		return "q";
	case KeyEvent.VK_W:
		return "w";
	case KeyEvent.VK_E:
		return "e";
	case KeyEvent.VK_R:
		return "r";
	case KeyEvent.VK_T:
		return "t";
	case KeyEvent.VK_Y:
		return "y";
	case KeyEvent.VK_U:
		return "u";
	case KeyEvent.VK_I:
		return "i";
	case KeyEvent.VK_O:
		return "o";
	case KeyEvent.VK_P:
		return "p";
	case KeyEvent.VK_A:
		return "a";
	case KeyEvent.VK_S:
		return "s";
	case KeyEvent.VK_D:
		return "d";
	case KeyEvent.VK_F:
		return "f";
	case KeyEvent.VK_G:
		return "g";
	case KeyEvent.VK_H:
		return "h";
	case KeyEvent.VK_J:
		return "j";
	case KeyEvent.VK_K:
		return "k";
	case KeyEvent.VK_L:
		return "l";
	case KeyEvent.VK_Z:
		return "z";
	case KeyEvent.VK_X:
		return "x";
	case KeyEvent.VK_C:
		return "c";
	case KeyEvent.VK_V:
		return "v";
	case KeyEvent.VK_B:
		return "b";
	case KeyEvent.VK_N:
		return "n";
	case KeyEvent.VK_M:
		return "m";
	default:
		return "";
	}
}
 
Example 12
Source File: Robot.java    From xnx3 with Apache License 2.0 4 votes vote down vote up
/**
 * 将字符型转换为按键码,可直接使用 {@link #press(int)}调用
 * @param key 字符型文字,包含 0~9 a~z .
 * @return 按键码
 */
public int StringToKey(String key){
	switch (key) {
	case "a":
		return KeyEvent.VK_A;
	case "b":
		return KeyEvent.VK_B;
	case "c":
		return KeyEvent.VK_C;
	case "d":
		return KeyEvent.VK_D;
	case "e":
		return KeyEvent.VK_E;
	case "f":
		return KeyEvent.VK_F;
	case "g":
		return KeyEvent.VK_G;
	case "h":
		return KeyEvent.VK_H;
	case "i":
		return KeyEvent.VK_I;
	case "j":
		return KeyEvent.VK_J;
	case "k":
		return KeyEvent.VK_K;
	case "l":
		return KeyEvent.VK_L;
	case "m":
		return KeyEvent.VK_M;
	case "n":
		return KeyEvent.VK_N;
	case "o":
		return KeyEvent.VK_O;
	case "p":
		return KeyEvent.VK_P;
	case "q":
		return KeyEvent.VK_Q;
	case "r":
		return KeyEvent.VK_R;
	case "s":
		return KeyEvent.VK_S;
	case "t":
		return KeyEvent.VK_T;
	case "u":
		return KeyEvent.VK_U;
	case "v":
		return KeyEvent.VK_V;
	case "w":
		return KeyEvent.VK_W;
	case "x":
		return KeyEvent.VK_X;
	case "y":
		return KeyEvent.VK_Y;
	case "z":
		return KeyEvent.VK_Z;
	case "0":
		return KeyEvent.VK_0;
	case "1":
		return KeyEvent.VK_1;
	case "2":
		return KeyEvent.VK_2;
	case "3":
		return KeyEvent.VK_3;
	case "4":
		return KeyEvent.VK_4;
	case "5":
		return KeyEvent.VK_5;
	case "6":
		return KeyEvent.VK_6;
	case "7":
		return KeyEvent.VK_7;
	case "8":
		return KeyEvent.VK_8;
	case "9":
		return KeyEvent.VK_9;
	case ".":
		return KeyEvent.VK_PERIOD;
	default:
		break;
	}
	
	return 0;
}
 
Example 13
Source File: PageSetupCommand.java    From gcs with Mozilla Public License 2.0 4 votes vote down vote up
private PageSetupCommand() {
    super(I18n.Text("Page Setup…"), CMD_PAGE_SETUP, KeyEvent.VK_P, SHIFTED_COMMAND_MODIFIER);
}
 
Example 14
Source File: PrintCommand.java    From gcs with Mozilla Public License 2.0 4 votes vote down vote up
private PrintCommand() {
    super(I18n.Text("Print…"), CMD_PRINT, KeyEvent.VK_P);
}
 
Example 15
Source File: SearchAndAnnotatePanel.java    From gate-core with GNU Lesser General Public License v3.0 4 votes vote down vote up
public FindPreviousAction() {
  super("Prev.");
  super.putValue(SHORT_DESCRIPTION, "Finds the previous occurrence.");
  super.putValue(MNEMONIC_KEY, KeyEvent.VK_P);
}
 
Example 16
Source File: PlotFrame.java    From opt4j with MIT License 4 votes vote down vote up
/**
 * Construct a plot frame with the specified title and the specified
 * instance of PlotBox. After constructing this, it is necessary to call
 * setVisible(true) to make the plot appear.
 * 
 * @param title
 *            The title to put on the window.
 * @param plotArg
 *            the plot object to put in the frame, or null to create an
 *            instance of Plot.
 */
public PlotFrame(String title, PlotBox plotArg) {
	super(title);

	// The Java look & feel is pretty lame, so we use the native
	// look and feel of the platform we are running on.
	try {
		UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
	} catch (Exception e) {
		// Ignore exceptions, which only result in the wrong look and feel.
	}

	if (plotArg == null) {
		plot = new Plot();
	} else {
		plot = plotArg;
	}

	// Background color is a light grey.
	plot.setBackground(new Color(0xe5e5e5));

	_fileMenu.setMnemonic(KeyEvent.VK_F);
	_editMenu.setMnemonic(KeyEvent.VK_E);
	_specialMenu.setMnemonic(KeyEvent.VK_S);

	// File menu
	JMenuItem[] fileMenuItems = { new JMenuItem("Open", KeyEvent.VK_O), new JMenuItem("Save", KeyEvent.VK_S),
			new JMenuItem("SaveAs", KeyEvent.VK_A), new JMenuItem("Export", KeyEvent.VK_E),
			new JMenuItem("Print", KeyEvent.VK_P), new JMenuItem("Close", KeyEvent.VK_C), };

	// Open button = ctrl-o.
	fileMenuItems[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.CTRL_MASK));

	// Save button = ctrl-s.
	fileMenuItems[1].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, Event.CTRL_MASK));

	// Print button = ctrl-p.
	fileMenuItems[4].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, Event.CTRL_MASK));

	// Close button = ctrl-w.
	fileMenuItems[5].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, Event.CTRL_MASK));

	FileMenuListener fml = new FileMenuListener();

	// Set the action command and listener for each menu item.
	for (int i = 0; i < fileMenuItems.length; i++) {
		fileMenuItems[i].setActionCommand(fileMenuItems[i].getText());
		fileMenuItems[i].addActionListener(fml);
		_fileMenu.add(fileMenuItems[i]);
	}

	_menubar.add(_fileMenu);

	// Edit menu
	JMenuItem format = new JMenuItem("Format", KeyEvent.VK_F);
	FormatListener formatListener = new FormatListener();
	format.addActionListener(formatListener);
	_editMenu.add(format);
	_menubar.add(_editMenu);

	// Special menu
	JMenuItem[] specialMenuItems = { new JMenuItem("About", KeyEvent.VK_A), new JMenuItem("Help", KeyEvent.VK_H),
			new JMenuItem("Clear", KeyEvent.VK_C), new JMenuItem("Fill", KeyEvent.VK_F),
			new JMenuItem("Reset axes", KeyEvent.VK_R), new JMenuItem("Sample plot", KeyEvent.VK_S), };
	SpecialMenuListener sml = new SpecialMenuListener();

	// Set the action command and listener for each menu item.
	for (int i = 0; i < specialMenuItems.length; i++) {
		specialMenuItems[i].setActionCommand(specialMenuItems[i].getText());
		specialMenuItems[i].addActionListener(sml);
		_specialMenu.add(specialMenuItems[i]);
	}

	_menubar.add(_specialMenu);

	setJMenuBar(_menubar);

	getContentPane().add(plot, BorderLayout.CENTER);

	// FIXME: This should not be hardwired in here.
	setSize(500, 300);

	// Center.
	Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
	Dimension frameSize = getSize();
	int x = (screenSize.width - frameSize.width) / 2;
	int y = (screenSize.height - frameSize.height) / 2;
	setLocation(x, y);
}
 
Example 17
Source File: PlotFrame.java    From OpenDA with GNU Lesser General Public License v3.0 4 votes vote down vote up
/** Construct a plot frame with the specified title and the specified
 *  instance of PlotBox.  After constructing this, it is necessary
 *  to call setVisible(true) to make the plot appear.
 *  @param title The title to put on the window.
 *  @param plotArg the plot object to put in the frame, or null to create
 *   an instance of Plot.
 */
public PlotFrame(String title, PlotBox plotArg) {
    super(title);

    if (plotArg == null) {
        plot = new Plot();
    } else {
        plot = plotArg;
    }

    // Background color is a light grey.
    plot.setBackground(new Color(0xe5e5e5));

    _fileMenu.setMnemonic(KeyEvent.VK_F);
    _editMenu.setMnemonic(KeyEvent.VK_E);
    _specialMenu.setMnemonic(KeyEvent.VK_S);

    // File menu
    JMenuItem[] fileMenuItems = {
        new JMenuItem("Open", KeyEvent.VK_O),
        new JMenuItem("Save", KeyEvent.VK_S),
        new JMenuItem("Save as....", KeyEvent.VK_A),
        new JMenuItem("Export", KeyEvent.VK_E),
        new JMenuItem("Print", KeyEvent.VK_P),
        new JMenuItem("Close", KeyEvent.VK_C),
    };
    // Open button = ctrl-o.
    fileMenuItems[0].setAccelerator(
            KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.CTRL_MASK));

    // Save button = ctrl-s.
    fileMenuItems[1].setAccelerator(
            KeyStroke.getKeyStroke(KeyEvent.VK_S, Event.CTRL_MASK));

    // Print button = ctrl-p.
    fileMenuItems[4].setAccelerator(
            KeyStroke.getKeyStroke(KeyEvent.VK_P, Event.CTRL_MASK));

    // Close button = ctrl-w.
    fileMenuItems[5].setAccelerator(
            KeyStroke.getKeyStroke(KeyEvent.VK_W, Event.CTRL_MASK));

    FileMenuListener fml = new FileMenuListener();
    // Set the action command and listener for each menu item.
    for (int i = 0; i < fileMenuItems.length; i++) {
        fileMenuItems[i].setActionCommand(fileMenuItems[i].getText());
        fileMenuItems[i].addActionListener(fml);
        _fileMenu.add(fileMenuItems[i]);
    }
    _menubar.add(_fileMenu);

    // Edit menu
    JMenuItem format = new JMenuItem("Format", KeyEvent.VK_F);
    FormatListener formatListener = new FormatListener();
    format.addActionListener(formatListener);
    _editMenu.add(format);
    _menubar.add(_editMenu);

    // Special menu
    JMenuItem[] specialMenuItems = {
        new JMenuItem("About", KeyEvent.VK_A),
        new JMenuItem("Help", KeyEvent.VK_H),
        new JMenuItem("Clear", KeyEvent.VK_C),
        new JMenuItem("Fill", KeyEvent.VK_F),
        new JMenuItem("Reset axes", KeyEvent.VK_R),
        new JMenuItem("Sample plot", KeyEvent.VK_S),
    };
    SpecialMenuListener sml = new SpecialMenuListener();
    // Set the action command and listener for each menu item.
    for (int i = 0; i < specialMenuItems.length; i++) {
        specialMenuItems[i].setActionCommand(
                specialMenuItems[i].getText());
        specialMenuItems[i].addActionListener(sml);
        _specialMenu.add(specialMenuItems[i]);
    }
    _menubar.add(_specialMenu);

    setJMenuBar(_menubar);

    getContentPane().add(plot, BorderLayout.CENTER);
    // FIXME: This should not be hardwired in here.
    setSize(500, 300);

    // Center.
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = getSize();
    int x = (screenSize.width - frameSize.width) / 2;
    int y = (screenSize.height - frameSize.height) / 2;
    setLocation(x, y);
}