web-dev-qa-db-ja.com

Javaでデフォルトのアプリケーションアイコンを変更するにはどうすればよいですか?

NetBeansを使用して、使い慣れたJavaコーヒーカップアイコンをjarファイルのリソースディレクトリに保存したpngファイルに変更しようとしています。さまざまなWebページが見つかりました。彼らは解決策を持っていると主張するが、今のところどれも機能しない。

ここに私が持っているものがあります(try-catchブロックを省きます):

URL url = new URL("com/xyz/resources/camera.png");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url);
getFrame().setIconImage(img);

このコードを含むクラスは、com.xyzパッケージに含まれています(違いがある場合)。このクラスはJFrameを拡張します。このコードは、最初の行でMalformedUrlExceptionをスローしています。

誰もが解決するソリューションを持っていますか?

61
Bill the Lizard
Java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");

パスの前に「/」が必要な場合と不要な場合があります。

71
JeeBee

Netbeansに移動し、デザインビューでJFrameプロパティに移動し、アイコンイメージプロパティを選択し、[カスタムコード]を使用して[フォームのiconImageプロパティの設定]を選択し、Form.SetIconImage()関数は次のコードを入力します。

Toolkit.getDefaultToolkit().getImage(name_of_your_JFrame.class.getResource("image.png"))

インポートすることを忘れないでください:

import Java.awt.Toolkit;

ソースコードで!

13
Ayoub Aneddame

または、画像をクラスに関連する場所に配置すると、文字列自体にそのすべてのパッケージ/パス情報は必要ありません。

com.xyz.SomeClassInThisPackage.class.getResource( "resources/camera.png" );

そうすれば、クラスを別のパッケージに移動する場合、すべての文字列を見つける必要はなく、クラスとそのリソースディレクトリを移動するだけです。

4
John Gardner

後にこの書き込みをお試しください

initcomponents();

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("Your image address")));
4
user2895893
    /** Creates new form Java Program1*/
    public Java Program1() 


    Image im = null;
    try {
    im = ImageIO.read(getClass().getResource("/image location"));
    } catch (IOException ex) {
    Logger.getLogger(chat.class.getName()).log(Level.SEVERE, null, ex);
    }
    setIconImage(im);

これは、netbeansのGUIで使用したもので、完全に機能しました

3
user1456935

さまざまなサイズのアイコンを定義する必要があります。UbuntuなどのWindowsおよびLinuxディストリビューションでは、タスクバーとAlt-Tabで異なるアイコンを使用します。

public static final URL ICON16 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug16.png");
public static final URL ICON32 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug32.png");
public static final URL ICON96 = HelperUi.class.getResource("/com/jsql/view/swing/resources/images/software/bug96.png");

List<Image> images = new ArrayList<>();
try {
    images.add(ImageIO.read(HelperUi.ICON96));
    images.add(ImageIO.read(HelperUi.ICON32));
    images.add(ImageIO.read(HelperUi.ICON16));
} catch (IOException e) {
    LOGGER.error(e, e);
}

// Define a small and large app icon
this.setIconImages(images);
1
ron190

javax.swing.JFrameを拡張するクラスでは、メソッドsetIconImageを使用します。

this.setIconImage(new ImageIcon(getClass().getResource("/resource/icon.png")).getImage());
1
user2601995

例:

URL imageURL = this.getClass().getClassLoader().getResource("Gui/icon/report-go-icon.png");
ImageIcon iChing = new ImageIcon("C:\\Users\\RrezartP\\Documents\\NetBeansProjects\\Inventari\\src\\Gui\\icon\\report-go-icon.png");      
btnReport.setIcon(iChing); 
System.out.println(imageURL);
0

this oneを試すことができます、それはうまく動作します:

`   ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
    this.setIconImage(icon.getImage());`
0
Mohamed Aharrat

内部フレームコンストラクター

try{    
       setIconImage(ImageIO.read(new File("./images/icon.png")));   
   }
catch (Exception ex){
       //do something
   }
0
Alex S