java - 添加 JMenuBar 并将其设置为可见后,Eclipse 不显示 JMenu 项目?

标签 java swing jmenu jmenuitem jmenubar

没有收到任何错误,但程序仅在程序顶部显示“菜单”一词。它不显示 3 个 JMenu 项:“home”、“about”和“explore”。

JPanel p5 = new JPanel(new GridBagLayout());
                p5.setVisible(true);
                fw.add(p5, BorderLayout.PAGE_START);

                JMenu menu = new JMenu("Menu");
                menu.setVisible(true);
                menu.add("home");
                menu.add("about");
                menu.add("explore");

                JMenuBar menubar = new JMenuBar();
                fw.setJMenuBar(menubar); //ADDED THIS LINE. STILL DOESN'T WORK. 

                menubar.setVisible(true);
                menubar.add(menu);
                p5.add(menu);

我已将 JMenu 添加到 JMenuBar(所有 JMenuJMenubarJPanel code> 设置为可见)。另外,我将 JPanel (p5) 添加到“第一个窗口 (fw)”,并将菜单添加到 p5。我不确定为什么我的菜单项没有显示。

更新: MCVE(最小完整且可验证的示例)根据要求。

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;  
public class TestingClass  extends JFrame {

    public static void main(String[] args) {

        FirstWindow fw = new FirstWindow();
        fw.setSize(400, 600);
        fw.setDefaultCloseOperation(EXIT_ON_CLOSE);         
        fw.setVisible(true);

        JPanel p5 = new JPanel(new GridBagLayout());
        p5.setVisible(true);

        fw.add(p5);

        JMenu menu = new JMenu("Menu");
        menu.setVisible(true);
        menu.add("home");
        menu.add("about");
        menu.add("explore");

        JMenuBar menubar = new JMenuBar();
        fw.setJMenuBar(menubar);    // THE UPDATED LINE OF CODE.
        menubar.setVisible(true);
        menubar.add(menu);
        p5.add(menu);
      } 
    }

当您运行该程序时,您将看到显示“菜单”字样。不显示 JMenu 中的“home、about 和 explore”项目。有人知道我做错了什么吗?

最佳答案

运行时问题的 MCVE 应该可以干净地编译。这显示了 3 个编译错误。一个是缺少导入(很容易修复),但另外两个与缺少 FirstWindow 有关。

然而,一旦进行了一些调整,问题就变得清晰起来。一个组件只能出现在一个地方。通过将其添加到面板(在下面注释掉),它也不会出现在菜单中。

enter image description here

import java.awt.*;
import javax.swing.*;

public class TestingClass  extends JFrame {

    public static void main(String[] args) {

        JFrame fw = new JFrame();
        fw.setSize(400, 200); // for screenshot
        fw.setDefaultCloseOperation(EXIT_ON_CLOSE);

        JPanel p5 = new JPanel(new GridBagLayout());
        p5.setVisible(true);

        fw.add(p5);

        JMenu menu = new JMenu("Menu");
        //menu.setVisible(true);
        menu.add("home");
        menu.add("about");
        menu.add("explore");

        JMenuBar menubar = new JMenuBar();
        fw.setJMenuBar(menubar);    // THE UPDATED LINE OF CODE.
        //menubar.setVisible(true);
        menubar.add(menu);
        //p5.add(menu); // WTF?

        fw.setVisible(true); //should be done after all components are added
    }
}

关于java - 添加 JMenuBar 并将其设置为可见后,Eclipse 不显示 JMenu 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24347872/

相关文章:

java - GridBagLayout - JFormattedTextFields 太少了?

java - JMenuItems 隐藏在我的 JApplet 后面

java - 如何使用箭头键(向上/向下)浏览 java 菜单项?

java - 改造和 RxJava : How to combine two requests and get access to both results?

java - 当我们重写一个方法时,我们应该使用方法签名中的所有参数吗?

java - 如何在 GUI 文本框而不是 Eclipse 控制台上打印输出?

java - JLabel到JPanel,拖放

java - 单击 JMenuItem 时如何获取 JMenu 的名称

java - Android Java 共享首选项推送通知一次

java - 删除 Java 上重复的扩展文件