
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
classファイルについて
-
Eclipse・プロジェクトで、フォ...
-
ResourceBundleクラスの使い方
-
「メイン・マニフェスト属性が...
-
SVFの設定について:クラスパス...
-
jdbcドライバのjarファイルにク...
-
javaでuseBeanエラーの解決方法
-
javaクラスファイルをEclipseで...
-
EclipseでのJSP・Servlet開発に...
-
ファイルのパスの取得について
-
『ClassNotFoundException: org...
-
EclipseでHTTP404エラーが出る。
-
「削除するか、クラスパスの正...
-
java.io.Fileクラスは絶対パス...
-
【Eclipse】逆コンパイルでエラ...
-
「main メソッドを持つクラスが...
-
「ワークスペースをビルド中」...
-
JSPのクラスをコンパイルできな...
-
正しいURL指定しているにもかか...
-
Eclipseで、プロジェクト名のと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
earファイルを展開する方法
-
javaクラスファイルをEclipseで...
-
eclipse でclassesフォルダーが...
-
Eclipse「リフレッシュ」と「ク...
-
ファイルのパスの取得について
-
jdbcドライバのjarファイルにク...
-
【Eclipse】パッケージ・エクス...
-
「main メソッドを持つクラスが...
-
VisualStudioでC++クラスを追加...
-
EclipseでのJSP・Servlet開発に...
-
EclipseでHTTP404エラーが出る。
-
「削除するか、クラスパスの正...
-
java クラスファイルとソースコ...
-
EclipseでのJDBCドライバについて
-
プログラム実行の際に、「ソー...
-
「メイン・マニフェスト属性が...
-
appletviewerが起動しません。
おすすめ情報