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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Java デスクトップアイコン変更
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
classファイルについて
-
SVFの設定について:クラスパス...
-
Eclipse「リフレッシュ」と「ク...
-
JavaFXの音楽再生でForでループ...
-
プログラム実行の際に、「ソー...
-
jarファイルをダブルクリックで...
-
eclipse でclassesフォルダーが...
-
javaクラスファイルをEclipseで...
-
ResourceBundleクラスの使い方
-
「メイン・マニフェスト属性が...
-
JAVAで外部ファイルをインクルード
-
eclipseでjarのエクスポートが...
-
jdbcドライバのjarファイルにク...
-
JAR内のクラス一覧と、メソッド...
-
Tomcat+Axis のサンプルで
-
ソースファイルはどの粒度で分...
-
環境変数の取得について
-
earファイルを展開する方法
-
java.io.Fileクラスは絶対パス...
-
コンパイルをしようとするとエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
classファイルについて
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
Eclipse・プロジェクトで、フォ...
-
SVFの設定について:クラスパス...
-
【Eclipse】パッケージ・エクス...
-
earファイルを展開する方法
-
eclipse でclassesフォルダーが...
-
「メイン・マニフェスト属性が...
-
ResourceBundleクラスの使い方
-
EclipseでHTTP404エラーが出る。
-
【Eclipse】逆コンパイルでエラ...
-
jdbcドライバのjarファイルにク...
-
DOMParserを使いたいのですが
-
コンパイルをしようとするとエ...
-
java クラスファイルとソースコ...
-
VisualStudioでC++クラスを追加...
-
『ClassNotFoundException: org...
-
プログラム実行の際に、「ソー...
-
Eclipseで、クラスを新規作成す...
おすすめ情報