2016-12-16 58 views
0

我已經意識到我的代碼在不同平臺上設置程序圖標(而不是java程序圖標)時存在問題。我寫了在Windows和Mac驗證碼:根據平臺放置一個程序圖標

private void putIcon() { 
    URL url = ClassLoader.getSystemResource("resources/icon.png"); 

    String name = System.getProperty("os.name"); 
    if (name.startsWith("Win")) { 
     Toolkit kit = Toolkit.getDefaultToolkit(); 
     Image img = kit.createImage(url); 
     this.setIconImage(img); 
    } else { 
     Application.getApplication().setDockIconImage(new ImageIcon(url).getImage()); 
    } 
} 

當我在Mac測試它有沒有問題,但是當我試了一下窗戶,我意識到這是行不通的,因爲那類不在窗口:

import com.apple.eawt.Application; 

我能做些什麼來解決這個問題?對於我研究過的,在代碼的導入部分中不可能有某種「if」,並且如果該類在windows中存在,它將不會編譯。

回答

1

檢查指定的類應用程序可以通過使用

Class.forName("com.apple.eawt.Application"); 

如果這種方法確實拋出一個ClassNotFoundException,調用由只使用反射你想要的方法來發現。似乎有點哈克,但它應該工作。

還要確保你沒有導入這個類。

+0

是的,反射工程;示例可以在[這裏](http://stackoverflow.com/a/30308671/230513)和'OSXAdapter'中找到[here](http://stackoverflow.com/a/2061318/230513)。 – trashgod