有人可以告诉我如何将菜单栏添加到边框布局北部。
我是这样写的
private void makeFrame()
{
frame = new JFrame("Game");
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(menubar, BorderLayout.NORTH);
contentPane.add(new JButton("south"), BorderLayout.SOUTH);
contentPane.add(new JButton("center"), BorderLayout.CENTER);
contentPane.add(new JButton("east"), BorderLayout.EAST);
frame.pack();
frame.setVisible(true);
makeMenuBar();
}
public void makeMenuBar(){
JMenuBar menubar = new JMenuBar();
JMenu menu;
JMenuItem item;
JMenu file = new JMenu("File");
menubar.add(file);
item = new JMenuItem("New Game...");
file.add(item);
item = new JMenuItem("Save As...");
file.add(item);
item = new JMenuItem("Quit");
file.add(item);
}
谁能告诉我如何将此菜单栏添加到北边界。
最佳答案
一般来说,您不应该使用 JFrame#setJMenuBar
相反
您遇到的问题似乎是这样一个事实:您要么在初始化容器之前将菜单栏添加到容器中,要么创建一个永远不会添加到屏幕上的 JMenuBar
的新实例
private void makeFrame()
{
frame = new JFrame("Game");
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
// ?? Don't know what this initialised to...
contentPane.add(menubar, BorderLayout.NORTH);
//...
makeMenuBar();
}
public void makeMenuBar(){
// A local variable with the same name...??
JMenuBar menubar = new JMenuBar();
哦,您在 makeMenuBar
中创建的实例仅是该方法的本地实例...因此它永远不会对您正在使用的 menubar
变量产生影响在makeFrame
...
关于Java:向边框布局添加菜单栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27458669/