Java 添加Swing菜单栏时出现一系列错误

Java 添加Swing菜单栏时出现一系列错误,java,macos,swing,netbeans,Java,Macos,Swing,Netbeans,我正在使用NetBeans创建一个Java应用程序,因此我正在利用GUI构建器,但是每当我尝试添加swing菜单栏时,我都会遇到大量错误。你能帮我解决这个问题吗 在GUI builder中的“Swing Menus”菜单下,我将“菜单栏”拖到JFrame的顶部(我有足够的空间容纳它和所有内容),它在GUI builder中看起来很好(查看下面的屏幕截图链接) GUI生成器菜单栏选择 在添加菜单栏之前,在GUI生成器中使用JFrame 添加菜单栏后在GUI生成器中的JFrame JFrame

我正在使用NetBeans创建一个Java应用程序,因此我正在利用GUI构建器,但是每当我尝试添加swing菜单栏时,我都会遇到大量错误。你能帮我解决这个问题吗

在GUI builder中的“Swing Menus”菜单下,我将“菜单栏”拖到JFrame的顶部(我有足够的空间容纳它和所有内容),它在GUI builder中看起来很好(查看下面的屏幕截图链接)

GUI生成器菜单栏选择

在添加菜单栏之前,在GUI生成器中使用JFrame

添加菜单栏后在GUI生成器中的JFrame

JFrame在添加菜单栏后运行应用程序

JFrame在运行应用程序后添加菜单栏之前

这些都是当我在应用程序中运行菜单栏时出现的错误

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.desktop/com.apple.laf.AquaMenuPainter.paintMenuBarBackground(AquaMenuPainter.java:149)
    at java.desktop/com.apple.laf.AquaMenuBarUI.paint(AquaMenuBarUI.java:82)
    at java.desktop/javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
    at java.desktop/javax.swing.JComponent.paintComponent(JComponent.java:797)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1074)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)
    at java.desktop/javax.swing.JLayeredPane.paint(JLayeredPane.java:590)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)
    at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5262)
    at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643)
    at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1618)
    at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1556)
    at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1060)
    at java.desktop/java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
    at java.desktop/sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
    at java.desktop/java.awt.Container.paint(Container.java:2002)
    at java.desktop/java.awt.Window.paint(Window.java:3926)
    at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:876)
    at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:848)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848)
    at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823)
    at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772)
    at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1884)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

有人知道为什么会发生这种情况吗?

我在谷歌上搜索了一下,发现(基于例外情况)这是由外观和感觉造成的。不知道为什么只在添加菜单栏时失败

请尝试将main方法中的look和feel设置为下面这样的其他内容。对我来说,netbeans总是生成使用nimbus l&f的主要方法

publicstaticvoidmain(字符串[]args){
试一试{
UIManager.setLookAndFeel(“javax.swing.plaf.nimbus.NimbusLookAndFeel”);
}捕获(例外e){
e、 printStackTrace();
}
…//前面的所有其他内容…例如java.awt.EventQueue.invokeLater(new Runnable()。。。
}
或者,您可以尝试以下方法代替Nimbus:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

你能发布代码吗?为了更快地获得更好的帮助,请添加or。@HasithaMJayawardana请不要建议新手发布“代码”。他们应该发布MRE/SSCCE。请注意,
[MRE]
不仅比“代码”少键入,而且还自动扩展到。