web-dev-qa-db-ja.com

JavaプログラムのDockアイコンをどのように変更しますか?

Macintoshプラットフォームで、JavaのプログラムのDockアイコンを変更するにはどうすればよいですか? AppleのJavaライブラリ(Macプラットフォームで何らかの追加サポートを提供する)の使用について聞いたことがありますが、実際の例はまだいくつか見つかりません。

23

Apple eAWTは、アプリケーションのドックアイコンを変更できる Application クラスを提供します。

import com.Apple.eawt.Application;
...
Application application = Application.getApplication();
Image image = Toolkit.getDefaultToolkit().getImage("icon.png");
application.setDockIconImage(image);
17
Bertil Chapuis

実行時に変更する方法はわかりませんが、コマンドラインで-Xdock:iconオプションを使用してDockアイコンを次のように設定できます。

 >Java -Xdock:icon=/path/myIcon.png myApp

この記事 JavaアプリをMacに導入することについて、役立つ情報がたくさんあります。リストされているMac用のユーティリティとツールをご覧ください ここ 、およびリストされているデプロイメントオプション ここ (最後のリンクは、Java Webstartルートをたどる場合に特に役立ちます)。

29
Zach L

Eclipseを使用している場合は、プロジェクトをMac OS Xアプリケーションバンドルとしてエクスポートし、アイコンとして使用する.icnsファイルを指定できます。
Eclipseで、[ファイル]> [エクスポート]に移動し、[その他]ディレクトリ内の[Mac OSXアプリケーションバンドル]オプションを選択します。

次のボタンをクリックします。
次に、「アプリケーションバンドルエクスポートメニュー」が表示されます。
このメニューの最後のオプションは「アイコン」です。ここで、ドックアイコンとして使用する.icnsファイルを指定します。

2つのEclipseエクスポートメニューの画像

.icnsファイルの作成に関する限り、AppleのアイコンComposerを使用して、画像ファイルから.icnsファイルを作成できます。 Macアイコンの作成に関する優れたチュートリアルです。 。

9
hcix

MicrosoftWindowsの場合

setIconImage(new ImageIcon("Football.png").getImage());

Mac OSXの場合

import com.Apple.eawt.Application;
Application.getApplication().setDockIconImage(new ImageIcon("Football.png").getImage());
7
Hassan Azimi

Java 9以降の解決策

JDK 9では、Mac OS Xのcom.Apple.eawtパッケージのAPIなどの内部APIにアクセスできなくなります。

参照: http://openjdk.Java.net/jeps/272

package main;

import javax.swing.JFrame;
import javax.swing.JLabel;
import Java.awt.Image;
import Java.awt.Taskbar;
import Java.awt.Toolkit;
import Java.net.URL;

/**
 * author: flohall
 * date: 2019-07-07
 */
public final class Main {

    public static void main (String[] args){

        final JFrame jFrame = new JFrame();

        //loading an image from a file
        final Toolkit defaultToolkit = Toolkit.getDefaultToolkit();
        final URL imageResource = Main.class.getClassLoader().getResource("resources/images/icon.gif");
        final Image image = defaultToolkit.getImage(imageResource);

        //this is new since JDK 9
        final Taskbar taskbar = Taskbar.getTaskbar();

        try {
            //set icon for mac os (and other systems which do support this method)
            taskbar.setIconImage(image);
        } catch (final UnsupportedOperationException e) {
            System.out.println("The os does not support: 'taskbar.setIconImage'");
        } catch (final SecurityException e) {
            System.out.println("There was a security exception for: 'taskbar.setIconImage'");
        }

        //set icon for windows os (and other systems which do support this method)
        jFrame.setIconImage(image);

        //adding something to the window so it does show up
        jFrame.getContentPane().add(new JLabel("Hello World"));

        //some default JFrame things
        jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);
        jFrame.pack();
        jFrame.setVisible(true);
    }
}

このコードはそのまま使用できます。画像のパスを変更するだけです。
mac os dockのアイコンを設定するこの新しい実装方法(JDK 9以降)は、アプリケーションのビルド時に問題が発生しないため、以前よりも優れています。また、このコードをWindowsコンピューターで使用しても問題はありません。 Java 9も必要ないため、推奨されないリフレクション。

5
flohall

XCodeがインストールされている場合は、JarBundlerを使用してJarファイルを使用してMacアプリを作成できます。 XCodeをお持ちでない場合は、次のJarBundlerを使用できます。

http://sourceforge.net/projects/jarbundler/

バンドラーの作成中に、.icns拡張子のアイコンを選択できます。それがあなたのドックアイコンになります。

0
VitorMM