Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Swing Gui Menu Bar Menus Wont Close

834897Jan 27 2011 — edited Jan 29 2011
With this gui, I have a menu bar, then right under it a panel that holds a game applet. Whenever you open one of the menus, then click onto the game applet, the menu is still open (like the 'File' menu showing the 'Close' menu item). Code for the gui is generated with netbeans. It is largely unfinished due to the fact that this menu thing is bugging me. I've tried using MouseListener's whenever someone clicks on the appletPanel, that the menu's would disappear, but it seems that when you click on the game applet inside of the appletPanel, it doesn't fire that event for appletPanel (nor the game Applet).
package org.gui;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JPopupMenu.Separator;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

import org.Main;

@SuppressWarnings("serial")
public class MainGui extends JFrame {

	private Main main;

	public static void init() {

	}

	public MainGui(Main main) {
		this.main = main;
		
		try {
			SwingUtilities.invokeAndWait(new Runnable() {
				public void run() {
					try {
						initComponents();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					//setVisible(true);
				}
			});
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void setTitle(String s) {
		super.setTitle("Minecraft " + s);
	}

	private void initComponents() throws Exception {
		appletPanel = new JPanel();
		menuBar = new JMenuBar();
		fileMenu = new JMenu();
		settingsMenuItem = new JMenuItem();
		closeMenuItem = new JMenuItem();
		toolsMenu = new JMenu();
		disableHacksMenuItem = new JCheckBoxMenuItem();
		toolMenuSeperator = new JPopupMenu.Separator();
		dumpLevelMenuItem = new JMenuItem();
		aboutMenu = new JMenu();
		aboutMenuItem = new JMenuItem();
		updatesMenuItem = new JMenuItem();

		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

		getContentPane().add(appletPanel, BorderLayout.CENTER);
		menuBar.setFocusable(true);
		
		appletPanel.setFocusable(true);
		appletPanel.setPreferredSize(new java.awt.Dimension(854, 480));
		appletPanel.setLayout(new BorderLayout());
		appletPanel.add(main.getGameApplet());

		fileMenu.setText("File");

		settingsMenuItem.setText("Settings");
		settingsMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				settingsMenuItemActionPerformed(evt);
			}
		});
		fileMenu.add(settingsMenuItem);

		closeMenuItem.setText("Close");
		closeMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				closeMenuItemActionPerformed(evt);
			}
		});
		fileMenu.add(closeMenuItem);

		menuBar.add(fileMenu);

		toolsMenu.setText("Tools");

		disableHacksMenuItem.setSelected(!main.getSettings().getHacksEnabled());
		disableHacksMenuItem.setText("Disable Hacks");
		disableHacksMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				disableHacksMenuItemActionPerformed(evt);
			}
		});
		toolsMenu.add(disableHacksMenuItem);
		toolsMenu.add(toolMenuSeperator);

		dumpLevelMenuItem.setText("Dump Level");
		dumpLevelMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				dumpLevelMenuItemActionPerformed(evt);
			}
		});
		toolsMenu.add(dumpLevelMenuItem);

		menuBar.add(toolsMenu);

		aboutMenu.setText("About");

		aboutMenuItem.setText("About");
		aboutMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				aboutMenuItemActionPerformed(evt);
			}
		});
		aboutMenu.add(aboutMenuItem);

		updatesMenuItem.setText("Check for Updates");
		updatesMenuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				updatesMenuItemActionPerformed(evt);
			}
		});
		aboutMenu.add(updatesMenuItem);

		menuBar.add(aboutMenu);

		setJMenuBar(menuBar);

		main.getGameApplet().loadApplet();

		this.pack();
		this.setVisible(true);
	}

	private void closeMenuItemActionPerformed(ActionEvent evt) {
		//main.getGameApplet().stop();
		System.exit(0);
	}

	private void settingsMenuItemActionPerformed(ActionEvent evt) {
		// TODO add your handling code here:
	}

	private void disableHacksMenuItemActionPerformed(ActionEvent evt) {
		main.getSettings().setHacksEnabled(!main.getSettings().getHacksEnabled());
	}

	private void dumpLevelMenuItemActionPerformed(ActionEvent evt) {
		// TODO add your handling code here:
	}

	private void aboutMenuItemActionPerformed(ActionEvent evt) {
		// TODO add your handling code here:
	}

	private void updatesMenuItemActionPerformed(ActionEvent evt) {
		// TODO add your handling code here:
	}

	// Variables declaration - do not modify
	private JMenu aboutMenu;
	private JMenuItem aboutMenuItem;
	private JPanel appletPanel;
	private JMenuItem closeMenuItem;
	private JCheckBoxMenuItem disableHacksMenuItem;
	private JMenuItem dumpLevelMenuItem;
	private JMenu fileMenu;
	private JMenuBar menuBar;
	private JMenuItem settingsMenuItem;
	private Separator toolMenuSeperator;
	private JMenu toolsMenu;
	private JMenuItem updatesMenuItem;
	// End of variables declaration

}
Edited by: 831894 on Jan 27, 2011 3:16 PM

Edited by: zasole on Jan 28, 2011 1:29 AM

Edited by: zasole on Jan 28, 2011 1:30 AM
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 26 2011
Added on Jan 27 2011
8 comments
440 views