1

简单的问题 - 我正在编辑一个基于 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();
}

关于如何解决这个问题的任何想法,或者在顶部创建一些额外的空间以便它不会干扰游戏?

谢谢

4

3 回答 3

0

看起来游戏面板不尊重插图。与其将菜单栏添加到 GameFrame 本身,不如创建一个顶级面板 - 将 GameFrame 放在 BorderLayout.CENTER 中,然后将菜单栏添加到顶级面板。然后将该面板添加到您的小程序中,而不是直接添加 GameFrame。

于 2013-07-21T02:23:30.557 回答
0

您可以尝试使用 Jpanel 创建暂停菜单。每个好游戏都需要一个暂停菜单:)。

如果你走这条路线,请确保给 JPanel 一个 keyListener,这样你就可以在按下确定的键时 setVisible。

于 2013-07-21T01:44:58.220 回答
0

而不是 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 和 MenuItem 帮助

于 2013-07-21T00:30:17.297 回答