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をスローしています。
機能するソリューションはありますか?
解決
java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");
パスの前に「/」が必要な場合と不要な場合があります。
他のヒント
Netbeansに移動し、デザインビューで JFrame
プロパティに移動し、アイコン画像プロパティを選択し、次を使用してSet Formの iconImage
プロパティを選択します:" Custom code"次に、 Form.SetIconImage()
関数に次のコードを挿入します:
Toolkit.getDefaultToolkit().getImage(name_of_your_JFrame.class.getResource("image.png"))
インポートすることを忘れないでください:
import java.awt.Toolkit;
ソースコードで!
または、クラスに関連する場所に画像を配置し、文字列自体にそのパッケージ/パス情報をすべて必要としない。
com.xyz.SomeClassInThisPackage.class.getResource( "resources/camera.png" );
クラスを別のパッケージに移動する場合、すべての文字列を見つける必要はなく、クラスとそのリソースディレクトリを移動するだけです。
この書き込みを後で試してください
initcomponents();
setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("Your image address")));
/** 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で使用したもので、完全に機能しました
javax.swing.JFrame
を拡張するクラスでは、メソッド setIconImage
を使用します。
this.setIconImage(new ImageIcon(getClass().getResource("/resource/icon.png")).getImage());
さまざまなサイズのアイコンを定義する必要があります。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);
例:
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);
フレームコンストラクター内
try{
setIconImage(ImageIO.read(new File("./images/icon.png")));
}
catch (Exception ex){
//do something
}
これを試すことができますが、問題なく動作します:
` ImageIcon icon = new ImageIcon(".//Ressources//User_50.png");
this.setIconImage(icon.getImage());`