在Apache NetBeans中为JFrame窗体添加Swing菜单栏时抛出异常
NetBeans添加Swing菜单栏时出现空指针异常问题
背景
通过New project -> Java with Ant -> Java Application创建Apache NetBeans新项目,右键点击包图标,选择New -> JFrame form创建JFrame窗体,随后从Palette面板添加Swing组件。
问题
添加Swing Menus下的Menu Bar组件后,窗体上直接显示堆栈跟踪信息,导致无法看到任何组件。堆栈跟踪内容如下:
The following exception has been thrown during painting of the form. Use the Navigator window to fix or remove the problematic component. java.lang.NullPointerException: Cannot invoke "javax.swing.border.Border.paintBorder(java.awt.Component, java.awt.Graphics, int, int, int, int)" because the return value of "com.apple.laf.AquaMenuPainter $RecyclableBorder.get(" is null at java.desktop/com.apple.laf.AquaMenuPainter.paintMenuBarBackground(AquaMenuPainter.java:149) at java.desktop/com.apple.laf.AquaMenuBarUl.paint(AquaMenuBarUl.java:88) at java.desktop/javax.swing.plaf.ComponentUl.update(ComponentUl.java:161) at java.desktop/javax.swing.JComponent.paintComponent(Component.java:852) at java.desktop/javax.swing.JComponent.paint(Component.java:1128) at java.desktop/javax.swing.JComponent.paintChildren(Component.java:961) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) at java.desktop/javax.swing.JLayeredPane.paint(LayeredPane.java:586) at java.desktop/javax.swing.jComponent.paintChildren(Component.java:961) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) at java.desktop/java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39) at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:75) at java.desktop/sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:112) at java.desktop/java.awt.Container.paint(Container.java:2005) atorg.netbeans.modules.form.fakepeer.FakePeerContainer.paint(FakePeerContainer.java:64) at java.desktop/javax.swing.JComponent.paintChildren(Component.java:975) at java.desktop/javax.swing.JComponent.paintUComponent.java:1137) at org.netbeans.modules.form.ComponentLayer$DesignerPanel.paint(ComponentLayer.java:165) at java.desktop/javax.swing.JComponent.paintChildren(Component.java:961) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) at java.desktop/javax.swing.JComponent.paintChildrenUComponent.java:961) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) at java.desktop/javax.swing.JComponent.paintChildren(Component.java:961) at org.netbeans.modules.form.FormDesigner$1.paintChildren(FormDesigner.java:195) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) at java.desktop/javax.swing.JLayeredPane.paint(LayeredPane.java:586) at java.desktop/javax.swing.JComponent.paintChildren(Component.java:961) at java.desktop/javax.swing.JComponent.paintUComponent.java:1137) at java.desktop/javax.swing.JViewport.paint(Viewport.java:736) at java.desktop/javax.swing.jComponent.paintChildren(Component.java:961) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) at java.desktop/javax.swing.JComponent.paintChildren(Component.java:961) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) atjava.desktop/javax.swing.JComponent.paintChildren(Component.java:961) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) at java.desktop/javax.swing.JComponent.paintChildren(Component.java:961) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) at java.desktop/javax.swing.JLayer.paint(Layer.java:476) at java.desktop/javax.swing.plaf.LayerUl.paint(LayerUl.java:85) at org.netbeans.core.multiview.SplitLayerUl.paint(SplitLayerUl.java:134) at java.desktop/javax.swing.plaf.ComponentUl.update(ComponentUl.java:161) at java.desktop/javax.swing.JComponent.paintComponent(Component.java:852) at java.desktop/javax.swing.JLayer.paint(Layer.java:471) at java.desktop/javax.swing.JComponent.paintChildren(Component.java:961) at java.desktop/javax.swing.JComponent.paint(Component.java:1137) at iava.desktop/iavax.swina.IComponent.paintChildren(IComponent.iava:961)
当向下滚动使菜单栏在Design标签页中不可见时,堆栈跟踪消失,其他组件正常显示;向上滚动菜单栏重新可见时,堆栈跟踪再次出现,组件消失。
此前排查
已搜索相关问题,包括Stack Overflow帖子、GitHub问题、Oracle社区讨论,但现有解决方案均无法解决该问题。
系统信息
NetBeans“关于”菜单显示的系统信息:
Product Version: Apache NetBeans IDE 15 Java: 18.0.2.1; Java HotSpot (TM) 64-Bit Server VM 18.0.2.1+1-1 Runtime: Java(M) SE Runtime Environment 18.0.2.1+1-1 System: Mac OS X version 12.4 running on x86_64; UTF-8; en_CN (nb) User directory: /Users/bryan351018/Library/Application Support/NetBeans/15 Cache directory: /Users/bryan351018/Library/Caches/NetBeans/15
命令行执行java --version的输出:
java 18.0.2.1 2022-08-18 Java(TM) SE Runtime Environment (build 18.0.2.1+1-1) Java HotSpot(TM) 64-Bit Server VM (build 18.0.2.1+1-1, mixed mode, sharing)
内容的提问来源于stack exchange,提问作者Bryan351018
相关产品推荐
相关产品推荐

