JMenu不可见

时间:2013-04-29 01:17:06

标签: java swing button

我的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阻止,后者正在不断更新。有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您没有向menuBar添加菜单,因此请添加以下行:

menu.add(fileMenu);


另外,代替c.add(menu),您应该使用

setJMenuBar(menu);

答案 1 :(得分:1)

  1. JFrame的标准布局为BorderLayout
  2. BorderLayout提供了5个区域,每个区域都可以接受 1 组件。
  3. 所以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