Java에서 기본 응용 프로그램 아이콘을 어떻게 변경합니까?
문제
NetBeans를 사용하여 친숙한 Java Coffee Cup 아이콘을 JAR 파일의 리소스 디렉토리에 저장 한 PNG 파일로 변경하려고합니다. 솔루션이 있다고 주장하는 여러 웹 페이지를 찾았지만 지금까지는 아무도 작동하지 않습니다.
현재 내가 가진 것 (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을 확장합니다. 이 코드는 첫 번째 줄에 mullformedurlexception을 던지고 있습니다.
누구든지 작동하는 솔루션이 있습니까?
해결책
java.net.URL url = ClassLoader.getSystemResource("com/xyz/resources/camera.png");
경로의 앞쪽에 '/'가 필요하거나 필요하지 않을 수 있습니다.
다른 팁
디자인보기에서 단순히 Netbeans를 가면 JFrame
속성, 아이콘 이미지 속성을 선택하고 양식 세트를 선택합니다. iconImage
"사용자 정의 코드"를 사용한 속성과 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에서 사용한 것입니다.
a 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());`