在调整窗口大小之前,JMenu不会出现

时间:2015-06-28 00:16:34

标签: java swing jframe jmenubar

我正在尝试创建一个示例程序,其中包含菜单和一些选项。 问题是当我运行程序时,菜单不会出现,直到窗口重新调整大小。我不确定问题是什么,我希望得到任何帮助。

以下是我正在使用的代码:

P.S。我已经导入了我需要的所有库。

public class TextEditor {


public static void main(String[] args) {
     JFrame f = new JFrame();

    f.setSize(700,500);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setResizable(true);
    f.setVisible(true);

    JMenuBar menuBar = new JMenuBar();
    f.setJMenuBar(menuBar);

    JMenu file = new JMenu("File");

    menuBar.add(file);

    JMenuItem open = new JMenuItem("Open File"); 

    file.add(open);

 }

 }

1 个答案:

答案 0 :(得分:2)

您需要设置尺寸并在添加JMenuBar之前将JFrame设置为可见,因此难怪菜单栏最初未显示,因为它最初从未呈现过。您的解决方案是在打包之前添加JMenuBar 并可视化您的GUI,从而解决您的问题。

import java.awt.Dimension;
import java.awt.event.KeyEvent;
import javax.swing.*;

public class TextEditor {

   public static void main(String[] args) {
      JFrame f = new JFrame("Foo");
      f.add(Box.createRigidArea(new Dimension(700, 500)));
      JMenuBar menuBar = new JMenuBar();
      f.setJMenuBar(menuBar);
      JMenu file = new JMenu("File");
      file.setMnemonic(KeyEvent.VK_F);
      menuBar.add(file);
      JMenuItem open = new JMenuItem("Open File");
      file.add(open);

      f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      f.pack();
      f.setVisible(true);
   }
}