Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMenu在调整窗口大小之前不显示_Java_Swing_Jframe_Jmenubar - Fatal编程技术网

Java JMenu在调整窗口大小之前不显示

Java JMenu在调整窗口大小之前不显示,java,swing,jframe,jmenubar,Java,Swing,Jframe,Jmenubar,我正在尝试创建一个示例程序,它有一个菜单和一些选项。 问题是,当我运行程序时,菜单在窗口重新调整大小之前不会出现。我不确定问题出在哪里,我希望能得到任何帮助 以下是我正在使用的代码: 另外,我已经导入了我需要的所有库 public class TextEditor { public static void main(String[] args) { JFrame f = new JFrame(); f.setSize(700,500); f.setDefaultC

我正在尝试创建一个示例程序,它有一个菜单和一些选项。 问题是,当我运行程序时,菜单在窗口重新调整大小之前不会出现。我不确定问题出在哪里,我希望能得到任何帮助

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

另外,我已经导入了我需要的所有库

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);

 }

 }

在添加JMenuBar之前,您正在设置大小并设置JFrame visible,因此,菜单栏最初没有显示也就不足为奇了,因为它最初从未渲染过。您的解决方案是在打包和可视化GUI之前添加JMenuBar,这样就解决了问题

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);
   }
}