菜单栏出现在 JFrame 的左侧。如何让它出现在JFrame的顶部?
Posted
技术标签:
【中文标题】菜单栏出现在 JFrame 的左侧。如何让它出现在JFrame的顶部?【英文标题】:MenuBar appears of the left of the JFrame. how to make it appear on the top of JFrame? 【发布时间】:2013-11-06 11:50:36 【问题描述】: 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 在测试构造函数中也不起作用。我也尝试在代码中插入一个按钮,但它也没有出现。那么框架出现这种行为的可能原因是什么,解决方法是什么?
【问题讨论】:
【参考方案1】:你可以尝试调用 setJMenuBar(..)
改变你的代码
menubar.add(file);
add(menubar);
file.add(eMenuItem);
到
menubar.add(file);
file.add(eMenuItem);
this.setJMenuBar(menubar);
这样就可以正常工作了。
【讨论】:
【参考方案2】:您使用BorderLayout
(默认)将您的菜单添加到容器中,并使用下一个代码:
add(menubar);
但要向JFrame
添加菜单,您可以使用下一行代替您的。
setJMenuBar(menubar);
输出:
【讨论】:
thanx @alex2410 这真的很有帮助,但你能告诉我为什么布局管理器不能在 setLayout() 方法中工作吗?? 在你的代码中你永远不会使用setLayout()
,你也必须将LayoutManager
传递给那个方法。这里是tutorial。【参考方案3】:
你就这样放
add(menubar,BorderLayout.NORTH);
【讨论】:
【参考方案4】:这就是你要找的东西
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();
【讨论】:
以上是关于菜单栏出现在 JFrame 的左侧。如何让它出现在JFrame的顶部?的主要内容,如果未能解决你的问题,请参考以下文章
使用 TailwindCSS 单击按钮时,使侧边栏从左侧滑入