web-dev-qa-db-ja.com

JARに画像を追加Java

JFrameでいくつかの画像を使用していますが、フレームのパネルに画像をロードするパスを指定していますが、アプリケーションのjarファイルを作成すると、画像が表示されません。
画像はどこに配置すればよいですか?
パスを指定するにはどうすればよいですか?

setIconImage(Toolkit.getDefaultToolkit().getImage(
                "D:\\RFT\\src\\dailogBox\\dump.jpg"));

このように私はやった。

22
ranjan

最初のステップ:JARファイルの定義された場所にイメージを配置します。 src-folderに配置した場合、IDEまたはビルドツールが自動的にJARにパッケージ化します。それ以外の場合は、IDE/build-toolのドキュメントを確認してください。あなたはそれを置く必要があります。

2番目のステップ:プログラムからファイルにアクセスします。パッケージ(JAR内のパス)package1/package2に入れ、ファイル名はdump.jpgだと思います。その場合、次のように呼び出します。

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/package1/package2/dump.jpg")));

getClass()。getResource(...)は、クラスパス上のリソースのURLを返します。クラスパスのパスは「/」で始め、リソースへの完全なパス/パッケージを「/」で区切って使用します。

43
Mnementh

これはIS JARアプリ内のすべての画像とアイコンを処理する最良の方法です。

すべての画像とアイコンを独自のJARファイルに圧縮したら、画像のJARファイルをライブラリタブに追加してビルドパスを構成し、クラスパスに含まれるようにします。

次に、コンストラクタの先頭で次のコードの3x行を使用して、シンプルなImageIconをメインアイコンとして受け入れないSystemTrayイメージを含むあらゆるものに必要なイメージにアクセスします(奇妙なことに)。 3x行は次のとおりです。

  URL iconUrl = this.getClass().getResource("/image-iconb.png");
  Toolkit tk = this.getToolkit();
  someimgicon = tk.getImage(iconUrl);

(someimgiconは、Image変数として宣言された単なるコンストラクタです)これでできるウィンドウアイコンを次のように設定します。

setIconImage(someimgicon);

andを宣言して、システムトレイアイコンを設定するときに、同じ変数を同時に使用します。

 trayIcon = new TrayIcon(someimgicon, "SystemTray Demo", popupMenu);

上記により、画像リソースを適切な場所に保持しないというリスクを冒すことなく、ImagesまたはImageIconsを簡単かつ一元的に宣言できます。実行時に自動的にコンパイルされたすべての画像とプログラムの配布が含まれているJARにより、見栄えがよく、きちんと維持されます。

おまけとして、JARがクラスパスに登録されると、他のイメージを同じJARにいつでも追加でき、手間もかかりません-すべてが機能し、追加されたイメージはすぐに利用できますあなたのアプリ。

私の見解でははるかに良い。

まず、ソースパッケージの下にパッケージ(画像など)を作成します。

すべてのイメージをこのパッケージにコピーします(パッケージを作成すると、パッケージの名前のフォルダーがプロジェクトのsrcフォルダー内に作成されるので、そこにイメージをコピーします)

次のようにプログラムから画像にアクセスできます

例1:

        this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/yourimagename")));

例2:

        URL imageurl = getClass().getResource("/images/imagename");//assuming your package name is images 
        Image myPicture = Toolkit.getDefaultToolkit().getImage(imageurl);
        JLabel piclabel = new JLabel(new ImageIcon( myPicture ));
        piclabel.setBounds(0,0,myPicture.getWidth(null),myPicture.getHeight(null));

このJLabel piclabelを使用してください

3
Joyal Augustine

Netbeans 8.1では、プロジェクトファイルのsrcフォルダー内にResourcesと呼ばれるアイコンやその他の画像のフォルダーを含めるようにしています。したがって、ビルドするたびにJar fileフォルダーがそこに含まれます。ファイルツリーは次のようになります。

  • src(ソースパッケージのJavaファイルはこちら)
  • **プロジェクトで指定したパッケージ**

    • file.Java
  • 資源

    • image.jpg

コードは次のようになります。

jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg")));
1

たとえば、jarファイルにリソースと呼ばれるフォルダーを作成し、相対パスを使用してそこから画像を参照するなど、多くの方法があります。

1
hhafez

Jarにイメージをリソースとして追加し、(jarがクラスパス上にあると想定して)クラスローダーを使用して ストリームとしてロード します。

0
joeslice