我用我的游戏引擎java类做了一个游戏。游戏引擎使用paintcomponent绘制元素。下面是游戏的一个片段:gamepic
我想在游戏的顶部或按钮添加一个额外的jlabel和jmenu。
这是我的密码:
public class LabyrinthGUI {
private JFrame frame;
private GameEngine gameArea;
private String PlayerName;
public LabyrinthGUI(String PlayerName) {
frame = new JFrame("GAME");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//making new manu bar
JMenuBar mb = new JMenuBar();
JMenu sg = new JMenu("Settings");
JMenuItem ng = new JMenuItem("New game");
mb.add(ng);
mb.add(sg);
frame.getContentPane().add(mb);
gameArea = new GameEngine(PlayerName);//This is a game engine
JLabel l1 = new JLabel("First Label.");
l1.setBounds(50,50, 100,30);
frame.add(l1);
frame.getContentPane().add(gameArea);
frame.setPreferredSize(new Dimension(800, 600));
frame.setResizable(false);
frame.pack();
frame.setVisible(true);
}
我的代码的问题是它似乎没有将jlabel和jmenubar添加到游戏中。
2条答案
按热度按时间piah890a1#
添加
JMenuBar
给你的JFrame
你必须使用setJMenuBar()
方法:public void setJMenuBar(JMenuBar menubar)
设置此框架的菜单栏。参数:
menubar
-放置在框架中的菜单栏另请参见:
getJMenuBar()
所以你使用它就像:对于添加到内容窗格的标签和游戏引擎:
JFrame
使用BorderLayout
布局管理器作为将组件放置在窗格上的默认设置。请参阅的文档JFrame
:默认内容窗格将具有
BorderLayout
经理开始了。因为您没有指定要将组件与
BorderLayout
布局管理器中,组件将放置在CENTER
. 但是,在由定义的插槽中只能有一个组件BorderLayout
布局管理器。最新添加的组件将覆盖先前放置的组件(在同一插槽中),因此JLabel
将被后来添加的游戏引擎覆盖。取决于您希望如何/在何处放置JLabel
而您的游戏引擎,您必须使用不同的布局管理器,或者指定要将组件与BorderLayout
布局管理器。mutmk8jj2#
将jmenubar添加到jframe的方法不是:
但是:
看看java教程中的创建菜单部分。