Java 菜单栏出现在JFrame的左侧。如何使其显示在JFrame的顶部?
}Java 菜单栏出现在JFrame的左侧。如何使其显示在JFrame的顶部?,java,swing,layout-manager,menubar,Java,Swing,Layout Manager,Menubar,} 我已经编写了上述代码,并试图找出菜单栏出现在框架左侧但失败的原因。此外,layoutmanager在测试构造函数中不起作用。我还试图在代码中插入一个按钮,但它没有出现。那么,框架出现这种行为的可能原因是什么?解决方案是什么?您使用BorderLayout(默认设置)和下一个代码将菜单添加到容器中: import javax.swing.*; import java.awt.event.*; //import java.awt.event.ActionListener; class Te
我已经编写了上述代码,并试图找出菜单栏出现在框架左侧但失败的原因。此外,layoutmanager在测试构造函数中不起作用。我还试图在代码中插入一个按钮,但它没有出现。那么,框架出现这种行为的可能原因是什么?解决方案是什么?您使用
BorderLayout
(默认设置)和下一个代码将菜单添加到容器中:
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();
}
但要将菜单添加到JFrame
中,您可以使用下一行代替您的
add(menubar);
输出:
这就是你要找的
setJMenuBar(menubar);
您可以尝试调用setJMenuBar(..) 更改您的代码
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();
}
}
到
那就好了。简单地说就是这样
menubar.add(file);
file.add(eMenuItem);
this.setJMenuBar(menubar);
thanx@alex2410这真的很有帮助,但你能告诉我为什么布局管理器不能在setLayout()方法中工作吗?在你的代码中,你从来没有使用过
setLayout()
,而且你必须将LayoutManager
传输到该方法。这是。
menubar.add(file);
file.add(eMenuItem);
this.setJMenuBar(menubar);
add(menubar,BorderLayout.NORTH);