Java:向borderlayout添加菜单栏
谁能告诉我如何将菜单栏添加到borderlayout NORTH 我是这样写的Java:向borderlayout添加菜单栏,java,swing,Java,Swing,谁能告诉我如何将菜单栏添加到borderlayout NORTH 我是这样写的 private void makeFrame() { frame = new JFrame("Game"); Container contentPane = frame.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(menubar, BorderLayout.
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);
}
有谁能告诉我如何将此菜单栏添加到border north吗。一般来说,您不应该,而是应该使用 您遇到的问题似乎是,您要么在初始化之前将菜单栏添加到容器中,要么创建一个从未添加到屏幕中的新实例
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
中创建的实例只是该方法的本地实例……因此它永远不会对您在makeFrame
中使用的menubar
变量产生影响。…我将menubar设置为一个字段,它可以工作!谢谢:)