0

我的 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 阻止了。有没有什么办法解决这一问题?

4

2 回答 2

2

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

menu.add(fileMenu);


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

setJMenuBar(menu);
于 2013-04-29T01:20:00.673 回答
1
  1. a的标准布局JFrameBorderLayout
  2. BorderLayout提供 5 个区域,每个区域可以接受1 个组件。

因此,代码如下:

c.add(panel, "Center");
c.add(menu, "Center");

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

c.add(panel, BorderLayout.CENTER); // Don't use magic numbers!
c.add(menu, BorderLayout.PAGE_START);

话虽如此, aJFrame有更好的方式来显示 a JMenuBar,在@CoderTitan 的答案中有详细说明。

于 2013-04-29T03:12:15.623 回答