JMenuBar没有显示

use*_*466 4 java swing jmenubar jmenuitem jmenu

我似乎做的一切都是正确的.我只需要实现一个简单JMenuBar但似乎无法正常工作.有人可以帮我解决这个问题吗?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class swing {
   public static void main (String[] args) {
      JFrame frame = new JFrame ("menu");
      frame.setVisible (true);
      frame.setSize (400, 400);
      frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
      JMenuBar bar = new JMenuBar ();
      frame.setJMenuBar (bar);
      bar.setVisible (true);
      JMenu file = new JMenu ("File");
      bar.add (file);
      JMenuItem open = new JMenuItem ("open");
      file.add(open);
   }
}
Run Code Online (Sandbox Code Playgroud)

Har*_*Joy 8

你正在做的是首先显示框架然后添加菜单栏.不起作用.你应该做反向.frame.setVisible (true);最后或至少在设置菜单栏后移动线.在向其添加所有组件后应始终显示框架,否则在显示框架之后添加的组件将在repaint()完成之前不显示.


来自@sjr的评论:

有时revalidate需要(不仅仅repaint)在显示容器后更改容器(添加/删除/调整组件).