public void goFullScreen()
	{
		final Cursor oldCursor = getContentPane().getCursor();
		final Rectangle oldBounds = getBounds();
		final GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();

		if (gd.isFullScreenSupported()) {
			try {
				setCursor(getToolkit().createCustomCursor(new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB),
					new Point(0, 0), "null"));
				dispose();
				menuBar.setVisible(false);
				setUndecorated(true);
				pack();
				setVisible(true);
				gd.setFullScreenWindow(this);

				InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
				final ActionMap actionMap = getRootPane().getActionMap();

				inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, true), "escAction");
				actionMap.put("escAction", new AbstractAction() {
					private static final long serialVersionUID = -2399289576909037389L;

					@Override
					public void actionPerformed(ActionEvent evt)
					{
						actionMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, true));
						MainFrame.this.setCursor(oldCursor);
						gd.setFullScreenWindow(null);
						MainFrame.this.dispose();
						menuBar.setVisible(true);
						MainFrame.this.setUndecorated(false);
						MainFrame.this.pack();
						MainFrame.this.setBounds(oldBounds);
						MainFrame.this.setVisible(true);
					}
				});
			} catch (Exception e1) {
				e1.printStackTrace();
			}
			/*
			 * finally { gd.setFullScreenWindow(null); }
			 */
		} else {
			setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
		}
	}