【发布时间】:2015-01-24 07:53:59
【问题描述】:
我有一个用 Java 制作的应用程序。当我使用跨平台 LAF(金属)从 Eclipse 运行它时
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
它显示 JButtons 和其他一些金属组件,JSpinners 使用 Aqua,而 JComboBoxes 使用 aqua 并且不能正常工作。他们实际上抛出:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.apple.laf.AquaMenuPainter.paintSelectedMenuItemBackground(AquaMenuPainter.java:153)
at com.apple.laf.AquaComboBoxRendererInternal.paintComponent(AquaComboBoxRenderer.java:151)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.CellRendererPane.paintComponent(CellRendererPane.java:151)
at javax.swing.plaf.basic.BasicListUI.paintCell(BasicListUI.java:227)
at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:317)
at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:240)
该应用与 Aqua 配合得很好。当我使用 JWrapper 将其导出为本机 .app 并在另一台使用 Mavericks 而不是 Yosemite 的 Mac 上运行时,问题仍然存在。
我正试图让我的程序与它强制使用的任何 LAF(Aqua、金属或任何其他)一起工作,所以这有点问题。
此外,这似乎与 this 相同,但建议的解决方案不起作用。
【问题讨论】:
标签: java macos look-and-feel