【问题标题】:Substance LookAndFeel Font IssueSubstance LookAndFeel 字体问题
【发布时间】:2016-10-08 10:51:02
【问题描述】:

所以,我使用了一种 Substance LookAndFeel 皮肤。对于物质库的版本4.0,没有这样的问题。然而,从那里开始,我第一次注意到它是在 4.3 中,它不时出现。然后,当我跳上较新的版本 - 6.17.2.1 时,它 100% 的时间都是持久的。使用任何其他 L&F 完全没有问题,这显然意味着问题是 Substance 中的错误。搜索了一下,发现其他人也在经历。

遗憾的是,this 的开发停滞不前。

然而,异常状态:

线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException 在 sun.font.FontDesignMetrics$MetricsKey.init(FontDesignMetrics.java:217) 在 sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:286) 在 sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1113) 在 javax.swing.JComponent.getFontMetrics(JComponent.java:1626) 在 sun.swing.MenuItemLayoutHelper.reset(MenuItemLayoutHelper.java:126) 在 javax.swing.plaf.synth.SynthMenuItemLayoutHelper.(SynthMenuItemLayoutHelper.java:119) 在 javax.swing.plaf.synth.SynthGraphicsUtils.getPreferredMenuItemSize(SynthGraphicsUtils.java:437) 在 javax.swing.plaf.synth.SynthMenuItemUI.getPreferredMenuItemSize(SynthMenuItemUI.java:216) 在 javax.swing.plaf.basic.BasicMenuItemUI.getPreferredSize(BasicMenuItemUI.java:367) 在 javax.swing.JComponent.getPreferredSize(JComponent.java:1662) 在 javax.swing.BoxLayout.checkRequests(BoxLayout.java:484) 在 javax.swing.BoxLayout.preferredLayoutSize(BoxLayout.java:301) 在 javax.swing.plaf.basic.DefaultMenuLayout.preferredLayoutSize(DefaultMenuLayout.java:60) 在 javax.swing.plaf.synth.SynthMenuLayout.preferredLayoutSize(SynthMenuLayout.java:51) 在 java.awt.Container.preferredSize(Container.java:1796) 在 java.awt.Container.getPreferredSize(Container.java:1780) 在 javax.swing.JComponent.getPreferredSize(JComponent.java:1664) 在 javax.swing.JMenu.getPopupMenuOrigin(JMenu.java:377) 在 javax.swing.JMenu.setPopupMenuVisible(JMenu.java:343) 在 javax.swing.JPopupMenu.menuSelectionChanged(JPopupMenu.java:1478) 在 javax.swing.MenuSelectionManager.setSelectedPath(MenuSelectionManager.java:125) 在 javax.swing.plaf.basic.BasicMenuUI.appendPath(BasicMenuUI.java:222) 在 javax.swing.plaf.basic.BasicMenuUI.access$200(BasicMenuUI.java:49) 在 javax.swing.plaf.basic.BasicMenuUI$Handler.mousePressed(BasicMenuUI.java:461) 在 java.awt.Component.processMouseEvent(Component.java:6532) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 在 java.awt.Component.processEvent(Component.java:6300) 在 java.awt.Container.processEvent(Container.java:2236) 在 java.awt.Component.dispatchEventImpl(Component.java:4891) 在 java.awt.Container.dispatchEventImpl(Container.java:2294) 在 java.awt.Component.dispatchEvent(Component.java:4713) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 在 java.awt.Container.dispatchEventImpl(Container.java:2280) 在 java.awt.Window.dispatchEventImpl(Window.java:2750) 在 java.awt.Component.dispatchEvent(Component.java:4713) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 在 java.awt.EventQueue.access$500(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:709) 在 java.awt.EventQueue$3.run(EventQueue.java:703) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 在 java.awt.EventQueue$4.run(EventQueue.java:731) 在 java.awt.EventQueue$4.run(EventQueue.java:729) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 在 org.graffiti.editor.GlobalHotkeyManager.dispatchEvent(GlobalHotkeyManager.java:65) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

我知道那里没有任何 Substance 类的踪迹,因此更难追踪。

如果有人知道我可以在哪里举报,他/她很乐意分享。

很遗憾,如果我在已经投入时间修复一些其他令人讨厌的错误之后需要放弃它,或者回退到遥远的 2007 年的最后一个工作版本 - 4.0

此外,最糟糕的是 - 4.3_02 中有关于 InternalFrames 的 a major bugfix,实际上属于字体错误版本。

有什么建议或修复建议吗?

【问题讨论】:

  • 在 EOL 和 EndOfInterest 之后,大多数开发人员都去构建 JavaFX,大多数伟大的思想被 Oracle 拒绝(与 Sun 合并后)

标签: java swing exception fonts substance


【解决方案1】:

如果这对您来说还不算太晚,请在https://github.com/kirill-grouchnikov/substance/issues 提交一个错误,以防它发生在最新的 7.1dev 版本下。

看起来这发生在 Substance 和基于 Synth 的外观(Nimbus?)之间的外观切换过程中。我需要查看一个可以重现此问题的示例应用程序,以便对其进行修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2011-11-30
    • 1970-01-01
    • 2017-07-19
    • 2011-04-23
    • 2012-12-29
    • 2014-11-19
    相关资源
    最近更新 更多