Reputation: 4801
So, I use one of the Substance LookAndFeel Skins. For version 4.0 of the substance library there was no such issue. However, going on from there, I first noticed it in 4.3, where it was coming from time to time. Then when I jumped on the newer versions - 6.1 and 7.2.1 it is persistent 100% of the time. Using any other L&Fs gives no problems at all, clearly meaning that the issue is a bug in Substance. Searching for it, I saw that some other people were experiencing too.
Sadly, the development is stalled per this.
Yet, the exception states:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at sun.font.FontDesignMetrics$MetricsKey.init(FontDesignMetrics.java:217) at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:286) at sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1113) at javax.swing.JComponent.getFontMetrics(JComponent.java:1626) at sun.swing.MenuItemLayoutHelper.reset(MenuItemLayoutHelper.java:126) at javax.swing.plaf.synth.SynthMenuItemLayoutHelper.(SynthMenuItemLayoutHelper.java:119) at javax.swing.plaf.synth.SynthGraphicsUtils.getPreferredMenuItemSize(SynthGraphicsUtils.java:437) at javax.swing.plaf.synth.SynthMenuItemUI.getPreferredMenuItemSize(SynthMenuItemUI.java:216) at javax.swing.plaf.basic.BasicMenuItemUI.getPreferredSize(BasicMenuItemUI.java:367) at javax.swing.JComponent.getPreferredSize(JComponent.java:1662) at javax.swing.BoxLayout.checkRequests(BoxLayout.java:484) at javax.swing.BoxLayout.preferredLayoutSize(BoxLayout.java:301) at javax.swing.plaf.basic.DefaultMenuLayout.preferredLayoutSize(DefaultMenuLayout.java:60) at javax.swing.plaf.synth.SynthMenuLayout.preferredLayoutSize(SynthMenuLayout.java:51) at java.awt.Container.preferredSize(Container.java:1796) at java.awt.Container.getPreferredSize(Container.java:1780) at javax.swing.JComponent.getPreferredSize(JComponent.java:1664) at javax.swing.JMenu.getPopupMenuOrigin(JMenu.java:377) at javax.swing.JMenu.setPopupMenuVisible(JMenu.java:343) at javax.swing.JPopupMenu.menuSelectionChanged(JPopupMenu.java:1478) at javax.swing.MenuSelectionManager.setSelectedPath(MenuSelectionManager.java:125) at javax.swing.plaf.basic.BasicMenuUI.appendPath(BasicMenuUI.java:222) at javax.swing.plaf.basic.BasicMenuUI.access$200(BasicMenuUI.java:49) at javax.swing.plaf.basic.BasicMenuUI$Handler.mousePressed(BasicMenuUI.java:461) at java.awt.Component.processMouseEvent(Component.java:6532) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at org.graffiti.editor.GlobalHotkeyManager.dispatchEvent(GlobalHotkeyManager.java:65) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
I know that there is no track of any Substance classes up there, making it even harder to trace.
If anyone knows where I could possibly report it, he/she could gladly share.
It would be a pity, if I would need to abandon it after already investing time in fixing some other nasty bugs or fall back to the last working version - 4.0, from the distant 2007.
Moreover, the worst part is - there was a major bugfix regarding InternalFrames in 4.3_02, effectively falling under the font-buggy versions.
Any advices or fix suggestions?
Upvotes: 0
Views: 261
Reputation: 938
If this is not not too late for you, please file a bug over at https://github.com/kirill-grouchnikov/substance/issues in case it's happening under the latest 7.1dev builds.
Looks like this happening during the look-and-feel switch between Substance and a Synth-based look-and-feel (Nimbus?). I'd need to see a sample app that reproduces this so that it can be fixed.
Upvotes: 1