为什么菜单中的蓝条重叠?

问题描述 投票:1回答:1

我的Java中的JMenu有问题。当我添加一个子菜单时,菜单中的蓝色栏与子菜单重叠。(正如你在图片中看到的那样)我不知道如何解决这个问题,我在网上找不到任何内容。我希望你能帮助我。

示例图片:

https://i.stack.imgur.com/Y4SrP.png

PS:我使用Windows 10外观和感觉

public JFrame frame;
public static JDesktopPane desktopPane = new JDesktopPane();


/**
 * Create the application.
 */
public Systemstammdaten() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.addComponentListener(new ComponentAdapter() {
        @Override
        public void componentResized(ComponentEvent e) {
            desktopPane.setBounds(0, 22, frame.getWidth(), frame.getHeight());
        }
    });
    frame.getContentPane().setBackground(Color.LIGHT_GRAY);
    frame.setBounds(100, 100, 895, 593);
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JMenuBar menuBar = new JMenuBar();
    menuBar.setBounds(0, 0, 3860, 21);

    frame.getContentPane().add(menuBar);

    JMenu mnBearbeiten = new JMenu("Bearbeiten");
    menuBar.add(mnBearbeiten);

    JMenuItem mntmNutzer = new JMenuItem("Nutzer");
    mntmNutzer.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        Nutzer iframe = new Nutzer();
                        iframe.setVisible(true);
                        desktopPane.add(iframe);
                        iframe.setSelected(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    });
    mnBearbeiten.add(mntmNutzer);

    JMenuItem mntmRechte = new JMenuItem("Rechte");
    mnBearbeiten.add(mntmRechte);

    JMenu mnNewMenu = new JMenu("New menu");
    mnBearbeiten.add(mnNewMenu);

    JMenuItem mntmNewMenuItem = new JMenuItem("New menu item");
    mnNewMenu.add(mntmNewMenuItem);

    JMenuItem mntmNewMenuItem_1 = new JMenuItem("New menu item");
    mnNewMenu.add(mntmNewMenuItem_1);
    desktopPane.setBackground(Color.LIGHT_GRAY);

    desktopPane.setBounds(0, 22, 879, 532);
    frame.getContentPane().add(desktopPane);
}
java swing jmenu jmenuitem
1个回答
1
投票
frame.getContentPane().add(menuBar);

你应该使用:

frame.setJMenuBar( menuBar );

将菜单栏添加到框架的特殊保留区域。

另外,不要使用null布局和setBounds(...)。 Swing旨在与布局管理器一起使用。

然后,您只需将桌面窗格添加到框架中,它将占用未被菜单栏捕获的框架空间。

阅读Swing Tutorial。以下部分:

  1. How to Use Menu Bars
  2. How to use a JDesktopPane

包含更多信息和工作示例,以帮助您入门。

© www.soinside.com 2019 - 2024. All rights reserved.