为什么我的Java程序同时使用aqua LAF和System LAF的元素?

为什么我的Java程序同时使用aqua LAF和System LAF的元素?,java,macos,look-and-feel,Java,Macos,Look And Feel,我有一个用Java编写的应用程序。当我使用跨平台LAF(Metal)从eclipse运行它时 UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()) 它显示了JButton和其他一些金属组件,JSpinner使用Aqua,JComboxes使用Aqua,不能正常工作。他们实际上扔: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerE

我有一个用Java编写的应用程序。当我使用跨平台LAF(Metal)从eclipse运行它时
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName())

它显示了JButton和其他一些金属组件,JSpinner使用Aqua,JComboxes使用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将其导出为native.app并在另一台mac上运行时,问题依然存在,而不是在Yosemite上运行

我试图使我的程序与任何LAF的工作,它被迫使用(水,金属,或任何其他),所以这是一个小问题


另外,这似乎是与相同的问题,但建议的解决方案不起作用。

好的,在我决定发布这个问题之前,我已经为这个问题绞尽脑汁一个多小时了。几秒钟后我找到了答案

private static JLabel... = new JLabel("example");
private static JButton...= new JButton("example");
//Things up here will display as aqua


public static void main(String[] args){

    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        JLabel... =new JLabel("example");
        //things down here will display as metal
这是一个愚蠢的错误