为什么蓝色条在菜单中重叠?

时间:2018-12-01 20:05:45

标签: java swing jmenu jmenuitem

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

这对我有用:

JPopupMenu.setDefaultLightWeightPopupEnabled(false);