
GUIアプリを作成し、以下の方法でプログラムアイコンを設定しました。
アイコンはmainクラスのあるフォルダと同じ場所においてあります。
ImageIcon icon = new ImageIcon("./src/icon.PNG");
frame.setIconImage(icon.getImage());
この方法でプログラムアイコンが設定出来たのですが、
Eclipseのエクスポートからjarファイルを作成し、作成されたjarファイル
を実行してみたところ、プログラムアイコンが自分で設定したもの
ではなくデフォルトのjavaアイコンになってしまっていました。
アイコンの設定方法か、jarファイルの作成方法に問題があると
思うのですが、どうすればjarファイルのプログラムアイコンが
自分で設定したものになるのでしょうか。
No.3ベストアンサー
- 回答日時:
> この場合、どのクラスのインスタンスを生成すれば良いのでしょうか。
この場合だとMyClassです。
MyClassにはコンストラクターが無いようですが,その場合はデフォルト・コンストラクターが使えますから,
URL imageIconUrl = (new MyClass()).getClass().getClassLoader().getResource("icon.PNG");
という感じになるかと思います。
返事が遅くなってすみません。
おかげで、アプリのアイコンを変更することが出来るようになりました。
本当にありがとうございました。
No.2
- 回答日時:
> "icon.PNG"を含んだJARファイルの作成はどのようにすれば良いのでしょうか。
方法は色々あると思います。jarのヘルプ(jar -help)やEclipseのヘルプを見てください。Eclipseでやる場合は,たぶんエクスポートするまえにアイコンファイルをEclipseのプロジェクト内にインポートする必要があると思います。
> getClass()の部分で「型 Object の非 static メソッド getClass() を static 参照することはできません」
> というエラーが出てしまい、使用できませんでした。
staticメソッド内でインスタンスを指定せずにgetClass()を呼べば上記のエラーが出ます。当該クラスのインスタンスを生成してそのインスタンスのメソッドとしてgetClass()以下を呼べばエラーは出なくなるはずです。
http://www.javaroad.jp/java_class9.htm
この回答への補足
回答有難う御座います。
おかげで、画像ファイルを含んだjarファイルを作成する事が出来るようになりました。
インスタンスを生成せずに、メソッドを使用しているためにエラーが
発生している事も理解できました。
しかし、当該クラスが何を指しているのかがわかりません。
今のメインクラスのコードは以下の様になっています。
public class Myclass {
public static void main(String[] args) {
JFrame frame = new JFrame("タイトル");
OrgPanel panel1 = new OrgPanel(); //JPanelを継承したオリジナルクラス
//コンテナ生成
Container cont = frame.getContentPane();
cont.add(panel1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(250, 40, 885, 715);
frame.setVisible(true);
//アプリアイコン設定
URL imageIconUrl = frame.getClass().getClassLoader().getResource("./src/icon.PNG");
ImageIcon icon = new ImageIcon(imageIconUrl);
frame.setIconImage(icon.getImage());
}
}
frameやpanel1、contが当該クラスなのかと思ったのですが
どれを試してもプログラムアイコンは表示されませんでした。
この場合、どのクラスのインスタンスを生成すれば良いのでしょうか。
No.1
- 回答日時:
そもそもJARファイル内に"icon.PNG"ファイルは含まれているのでしょうか?
含まれている場合,JARファイル内のファイルにアクセスするには,リソースとしてアクセスする必要があります。
http://osima.jp/blog/resources_in_jar.html
や
http://www.ne.jp/asahi/hishidama/home/tech/java/ …
を参考にすると,
URL imageIconUrl = getClass().getClassLoader().getResource("icon.PNG");
ImageIcon icon = new ImageIcon(imageIconUrl);
という感じになるのではないかと思います。
この回答への補足
回答ありがとうございます。
JARファイルの中身を確認したところ、"icon.PNG"は含まれていませんでした。
"icon.PNG"を含んだJARファイルの作成はどのようにすれば良いのでしょうか。
また、教えて頂いたページを参考にして、ご指摘のコードを追加したところ
getClass()の部分で「型 Object の非 static メソッド getClass() を static 参照することはできません」
というエラーが出てしまい、使用できませんでした。
これは、JARファイルに"icon.PNG"が含まれている事とは無関係のエラーだと思うのですが、
何が間違っているのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- C言語・C++・C# C#の2つの実行ファイルとアプリアイコンの変更について 1 2023/01/07 16:57
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- 画像編集・動画編集・音楽編集 動画をディスク作成すると画像が乱れる。 4 2022/06/24 07:49
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- UNIX・Linux ubuntuのサーバー(virtual box)が、再起動するとデータが消えてしまいます。 4 2022/04/27 21:29
- Windows 10 Googleサイトのサイト内検索(虫眼鏡アイコン、検索ボックス)について 1 2022/04/08 12:16
- Gmail フィルター設定方法が分からん 1 2023/04/22 17:26
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
eclipse でclassesフォルダーが...
-
earファイルを展開する方法
-
「メイン・マニフェスト属性が...
-
「main メソッドを持つクラスが...
-
『ClassNotFoundException: org...
-
jdbcドライバのjarファイルにク...
-
VisualStudioでC++クラスを追加...
-
ファイルのパスの取得について
-
java クラスファイルとソースコ...
-
java.io.Fileクラスは絶対パス...
-
javaでuseBeanエラーの解決方法
-
jarファイルの解凍ができない
-
【Eclipse】パッケージ・エクス...
-
オブジェクト自身のバイナリフ...
-
JAR内のクラス一覧と、メソッド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
eclipse でclassesフォルダーが...
-
earファイルを展開する方法
-
EclipseでHTTP404エラーが出る。
-
java クラスファイルとソースコ...
-
jdbcドライバのjarファイルにク...
-
【Eclipse】パッケージ・エクス...
-
「メイン・マニフェスト属性が...
-
「削除するか、クラスパスの正...
-
「main メソッドを持つクラスが...
-
ResourceBundleクラスの使い方
-
『ClassNotFoundException: org...
-
プログラム実行の際に、「ソー...
-
VisualStudioでC++クラスを追加...
-
EclipseでのJSP・Servlet開発に...
-
サーバから落としてきたWebアプ...
おすすめ情報