2012-04-24 7 views
5

Windows 및 Ubuntu에서 잘 작동하는 Java Swing 프로젝트가 있습니다. Mac을 사용하지 않았으므로 테스트 할 수 없었습니다. Nimbus 테마를이 프로젝트의 표준으로 사용했습니다.Mac에서 실행했을 때 Swing GUI가 표시되지 않거나 표시되지 않습니다.

이제는 내 친구가 Eclipse에서 동일한 프로젝트를 테스트하고 jar를 내 보냈습니다. 내가 만든 특정 Java 클래스를 참조하지 않는 오류가 발생했습니다.

GUI가 표시되지만 때로는 스틱이 표시되거나 메뉴가 누락되는 경우가 있습니다.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at com.apple.laf.AquaMenuPainter.paintMenuBarBackground(AquaMenuPainter.java:123) 
    at com.apple.laf.AquaMenuUI.paintBackground(AquaMenuUI.java:57) 
    at com.apple.laf.AquaMenuPainter.paintMenuItem(AquaMenuPainter.java:160) 
    at com.apple.laf.AquaMenuUI.paintMenuItem(AquaMenuUI.java:35) 
    at javax.swing.plaf.basic.BasicMenuItemUI.paint(BasicMenuItemUI.java:452) 
    at javax.swing.plaf.basic.BasicMenuItemUI.update(BasicMenuItemUI.java:448) 
    at javax.swing.JComponent.paintComponent(JComponent.java:752) 
    at javax.swing.JComponent.paint(JComponent.java:1029) 
    at javax.swing.JComponent.paintChildren(JComponent.java:862) 
    at javax.swing.JComponent.paint(JComponent.java:1038) 
    at javax.swing.JComponent.paintChildren(JComponent.java:862) 
    at javax.swing.JComponent.paint(JComponent.java:1038) 
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:567) 
    at javax.swing.JComponent.paintChildren(JComponent.java:862) 
    at javax.swing.JComponent.paint(JComponent.java:1038) 
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:34) 
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60) 
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97) 

당신이 문제, 또는 특정 봐이 내가 Mac에서 사용되어야 테마를 느낄 수 있었다 무엇을 말해 줄 수 : GUI를 시작하면서 여기

오류의 버전을 박탈이 표시됩니다 ? Nimbus는 Mac에서 지원되지 않습니까? 그렇다면 무엇을 사용해야합니까?

+0

내가 테마를 변경하는 경우에 "아쿠아"는 작업을 시작, 그래서 내 질문에 오히려 제거하고 난 기본 OS는 MAC의 경우, 자바 감지하는 방법을 물어보고 싶은? – Johnydep

+1

IMHO, Mac에서는 모양과 느낌을 만지지 않습니다. Apple의 Aqua 테마는 대단합니다. Apple은 그런 식으로 사용자가 룩앤필을 설정할 필요가 없도록했습니다. Sun Swing Metal 대신 자동으로 Aqua가됩니다. –

+0

@MartijnCourteaux, 사실이지만 MAC에서 실행중인 동일한 코드를 사용하여 문제가 발생했습니다. "Nimbus"에 대한 Look & Feel을 명시 적으로 설정했거나이 할당을 제거해야합니까? – Johnydep

답변

6

내가 OS X에서 테마를 만지지 것, 그것은 자동으로 굉장합니다 : D

그냥 당신이 맥에있을 때 당신이 테마를 변경하지 않도록합니다. 좋아

String osName = System.getProperty("os.name").toLowerCase(); 
if (!osName.contains("mac")) // if not on mac 
{ 
    // set nimbus 
} 
// otherwise, do nothing. It goes automatically to Aqua. 
관련 문제