菜单栏显示在JFrame的左侧。如何让它出现在JFrame的顶部?

时间:2013-11-06 11:50:37

标签: java swing layout-manager menubar

 import javax.swing.*;
import java.awt.event.*;
//import java.awt.event.ActionListener;

 class Test extends JFrame 
 {
    JButton qb=new JButton("quit");
    JPanel p1=new JPanel();
    JMenuBar menubar = new JMenuBar();
   JMenu file = new JMenu("File");
   JMenuItem eMenuItem = new JMenuItem("Exit");
    public Test()
   {
    //setLayout();
    setTitle("this is a test");
    setSize(300,300);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setAlwaysOnTop(true);
    setResizable(true);
    setExtendedState( this.getExtendedState()|JFrame.MAXIMIZED_BOTH );//to set initial state of frame as minimized
    menubar.add(file);
    add(menubar);
    file.add(eMenuItem);

}
public static void main (String[] args) 
{
    new Test();
}

}

我已经编写了上面的代码,并试图找出为什么菜单栏出现在框架左侧但失败的原因。 layoutmanager也不适用于测试构造函数。我也尝试在代码中插入一个按钮,但它也没有出现。那么这种框架行为的可能原因是什么?解决方案是什么?

4 个答案:

答案 0 :(得分:2)

使用BorderLayout(默认设置)将您的菜单添加到容器中,下一个代码为:

add(menubar);

但是要将菜单添加到JFrame,您可以使用下一行代替您的。

setJMenuBar(menubar);

输出:

enter image description here

答案 1 :(得分:2)

您可以尝试调用setJMenuBar(..)

更改您的代码
    menubar.add(file);
    add(menubar);
    file.add(eMenuItem);

menubar.add(file);
file.add(eMenuItem);
this.setJMenuBar(menubar);

它会正常工作。

答案 2 :(得分:1)

只是你这样放

add(menubar,BorderLayout.NORTH);

答案 3 :(得分:0)

这就是你要找的东西

  import javax.swing.*;

import java.awt.GridBagLayout;
import java.awt.event.*;
//import java.awt.event.ActionListener;

 class Test extends JFrame 
 {
    JButton qb=new JButton("quit");
    JPanel p1=new JPanel();

JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
JMenuItem eMenuItem = new JMenuItem("Exit");
public Test()
{

    setTitle("this is a test");
    setSize(300,300);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setAlwaysOnTop(true);
    setResizable(true);
    setExtendedState( this.getExtendedState()|JFrame.MAXIMIZED_BOTH );//to set initial state of frame as minimized
    menubar.add(file);
    setJMenuBar(menubar);
    file.add(eMenuItem);

}
public static void main (String[] args) 
{
    new Test();
}
}