【问题标题】:JMenuBar not showingJMenuBar 不显示
【发布时间】:2012-06-12 06:18:25
【问题描述】:

我似乎做的一切都是正确的。我只需要实现一个简单的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);
   }
}

【问题讨论】:

    标签: java swing jmenu jmenuitem jmenubar


    【解决方案1】:

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


    来自@sjr的评论:

    有时需要revalidate(不仅是repaint)作为更改 容器之后的容器(添加/删除/调整组件大小) 已显示。

    【讨论】:

    • +1 这可能是对的。有时需要重新验证(不仅是重新绘制),因为在容器显示后更改容器(添加/删除/调整组件大小)需要您在容器上调用 revalidate
    • @sjr 非常感谢你救了我的考试非常感谢
    【解决方案2】:

    试试这个,它有效。

    将组件添加到框架中发生在其invisible state 中,一旦设置了所有组件,然后使其可见。

    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 extends JFrame {
       public swing(){
          this.setSize(400,400);
          this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
          this.setComponent();
       }
    
       public void setComponent(){
          JMenuBar bar = new JMenuBar();
          JMenu menu = new JMenu("Menu");
          this.setJMenuBar(bar);
          bar.add(menu);
       }
    
       public static void main (String[] args) {
          EventQueue.invokeLater(new Runnable(){
             public void run(){
                swing s = new swing();
                s.setVisible(true);
             }
          });
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多