Java로 만든 응용 프로그램이 있습니다. 나는 크로스 플랫폼 LAF (금속)와 이클립스에서 실행하면 UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
Java 프로그램이 아쿠아 LAF와 시스템 LAF를 동시에 사용하는 이유는 무엇입니까?
그것은 JButton의 금속에 다른 구성 요소, 아쿠아를 사용하여 JSpinners의, 그리고 JComboBoxes 사용 아쿠아를 보여주고 제대로 작동하지 않습니다. 그들은 실제로 던지기 :
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로 내 보낸 후 Yosemite 대신 Mavericks로 다른 Mac에서 실행했을 때 계속 유지됩니다.
저는 LAF가 강제로 (Aqua, metal 또는 다른 어떤 것) 사용하여 프로그램을 작동 시키려고합니다. 그래서 이것은 약간 문제입니다.
또한 문제는 this과 같지만 제안 된 해결책이 작동하지 않습니다.