我的Java JMenu出现问题。当我添加一个子菜单时,菜单上的蓝色条与该子菜单重叠。(如您在图片中所见),我不知道该如何解决此问题,并且在互联网上什么也没找到。 我希望你能帮助我。
示例图片:
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);
}
答案 0 :(得分:1)
frame.getContentPane().add(menuBar);
您应该使用:
frame.setJMenuBar( menuBar );
将菜单栏添加到框架的特殊保留区域。
此外,请勿使用null布局和setBounds(...)。 Swing旨在与布局管理器一起使用。
然后,您只需将桌面窗格添加到框架中,它将占用菜单栏未占用的框架空间。
阅读Swing Tutorial。关于以下部分:
How to Use Menu Bars
How to use a JDesktopPane
包含更多信息和工作示例以帮助您入门。
答案 1 :(得分:0)
这对我有用:
JPopupMenu.setDefaultLightWeightPopupEnabled(false);