我的JFrame中有一个JMenu和JPanel
设置代码:
public Gui(String title) {
super(title);
createGUIComponents();
pack();
this.setBackground(Color.WHITE);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setResizable(true);
this.setMinimumSize(new Dimension(180, 100));
this.setSize(new Dimension(800, 600));
this.setVisible(true);
}
private void createGUIComponents() {
Container c = this.getContentPane();
JPanel panel = new SpecialJPanel();
JMenuBar menu = new JMenuBar();
fileMenu = new JMenu("File", false);
fileMenu.add("New");
fileMenu.add("Open");
fileMenu.add("Save");
fileMenu.add("Save As");
c.add(panel, "Center");
c.add(menu, "Center");
}
每当我单击JMenuBar上的“文件”菜单按钮时,都不显示任何内容。我认为它被JPanel阻止,后者正在不断更新。有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
您没有向menuBar添加菜单,因此请添加以下行:
menu.add(fileMenu);
另外,代替c.add(menu)
,您应该使用
setJMenuBar(menu);
答案 1 :(得分:1)
JFrame
的标准布局为BorderLayout
BorderLayout
提供了5个区域,每个区域都可以接受 1 组件。 所以wherreas的代码是:
c.add(panel, "Center");
c.add(menu, "Center");
它实际上应该读更像:
c.add(panel, BorderLayout.CENTER); // Don't use magic numbers!
c.add(menu, BorderLayout.PAGE_START);
话虽如此,JFrame
有更好的方法来展示JMenuBar
,详见answer by @CoderTitan。