有人可以告诉我如何将我的菜单栏添加到borderlayout NORTH。
我是这样写的。
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);
}
任何人都可以告诉我如何将此菜单栏添加到北边界。
答案 0 :(得分:2)
一般来说,您不应该使用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
变量产生影响...