首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JMenu不可见

JMenu不可见
EN

Stack Overflow用户
提问于 2013-04-29 09:17:06
回答 2查看 495关注 0票数 0

我的JFrame中有一个JMenu和一个JPanel

设置代码:

代码语言:javascript
运行
复制
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屏蔽了,它正在不断更新。有没有办法解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2013-04-29 09:20:01

您没有将菜单添加到menuBar,因此添加以下行:

代码语言:javascript
运行
复制
menu.add(fileMenu);

此外,您应该使用c.add(menu),而不是

代码语言:javascript
运行
复制
setJMenuBar(menu);
票数 2
EN

Stack Overflow用户

发布于 2013-04-29 11:12:16

BorderLayout

  • BorderLayout的标准布局是
  1. JFrame提供了5个区域,每个区域可以接受1组件。

那么当代码是这样写的时候:

代码语言:javascript
运行
复制
c.add(panel, "Center");
c.add(menu, "Center");

它实际上应该读起来更像这样:

代码语言:javascript
运行
复制
c.add(panel, BorderLayout.CENTER); // Don't use magic numbers!
c.add(menu, BorderLayout.PAGE_START);

话虽如此,JFrame有一种更好的方式来显示JMenuBar,详见answer by @CoderTitan

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16269932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档