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也不适用于测试构造函数。我也尝试在代码中插入一个按钮,但它也没有出现。那么这种框架行为的可能原因是什么?解决方案是什么?
答案 0 :(得分:2)
使用BorderLayout
(默认设置)将您的菜单添加到容器中,下一个代码为:
add(menubar);
但是要将菜单添加到JFrame
,您可以使用下一行代替您的。
setJMenuBar(menubar);
输出:
答案 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();
}
}