一个简单的问题-我正在编辑基于Java的MMORPG游戏,并想向游戏框架添加菜单栏。我照做了,但是菜单栏似乎切入了游戏并阻止了某些内容,使其隐藏在菜单栏的后面。这里有一个示例图片:
这是我的代码的图片:
public GameFrame(GameWindow gameWindow, int width, int height, String title, boolean resizable, boolean flag1) {
frameOffset = 28;
frameWidth = width;
frameHeight = height - 1;
aGameWindow = gameWindow;
addListeners(this, gameWindow);
if (flag1)
frameOffset = 48;
else
frameOffset = 28;
setTitle(title);
setResizable(resizable);
menubar = new MenuBar();
menu = new java.awt.Menu("Menu");
submenu = new java.awt.Menu("Sub Menu");
m1 = new MenuItem("Menu Item 1");
m2 = new MenuItem("Menu Item 2");
m3 = new MenuItem("Menu Item 3");
m4 = new MenuItem("Menu Item 4");
m5 = new MenuItem("Menu Item 5");
menu.add(m1);
menu.add(m2);
menu.add(m3);
submenu.add(m4);
submenu.add(m5);
menu.add(submenu);
menubar.add(menu);
setMenuBar(menubar);
this.addWindowListener(new WindowListener() {
@Override
public void windowActivated(WindowEvent arg0) {}
@Override
public void windowClosed(WindowEvent arg0) {
System.exit(-1);
}
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(-1);
}
@Override
public void windowDeactivated(WindowEvent arg0) {}
@Override
public void windowDeiconified(WindowEvent arg0) {}
@Override
public void windowIconified(WindowEvent arg0) {}
@Override
public void windowOpened(WindowEvent arg0) {}
});
show();
toFront();
resize(frameWidth, frameHeight);
aGraphics49 = getGraphics();
}
关于如何解决此问题或在顶部留出一些额外空间以使其不会干扰游戏的任何想法?
谢谢
最佳答案
代替JMenuBar,只需执行一个MenuBar。它会在GUI上方显示一个菜单栏,并允许您显示GUI的全屏...它在任何方面都充当JMenuBar。
MenuBar mB = new MenuBar();
Menu menu = new Menu("Menu");
MenuItem mI1 = new MenuItem("Menu Item 1");
// setting the bar
this.setMenuBar(mB);
//adding the menu onto the bar
mB.addMenu(menu);
// adding the menu item into the menu
menu.addMenuItem(mI1);
//adding action listener
mI1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// do whatever
}
});
您可以在这里看到更多:
MenuBar, Menu, and MenuItem help