2010-03-20 27 views
6

Mã sau hoạt động tốt khi chạy trên NetBeans.Đặt hình ảnh biểu tượng trong tệp Jar

this.getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage("PlagiaLyzerIcon.png")); 

Tuy nhiên, khi nó được tích hợp vào tệp Jar, biểu tượng đã biến mất.

Bất kỳ ai cũng biết vấn đề là gì? Tôi nhận ra rằng tôi đã đưa hình ảnh biểu tượng vào thư mục gốc, tuy nhiên, sau khi biên dịch thành JAR, biểu tượng biến mất.

Nhờ sự giúp đỡ ...

Hi tất cả mọi người, vấn đề đã được giải quyết với đoạn mã sau,

this.getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("plagialyzer/resources/PlagiaLyzerIcon.png"))); 

Nó hoạt động một lần biên dịch vào file jar.

Trả lời

7

Sử dụng

this.getFrame().setIconImage(
new imageIcon(getClass().getClassLoader().getResource("PlagiaLyzerIcon.png")) 
); 

để thay thế.

Lưu ý:

dòng này chỉ hoạt động nếu hình ảnh nằm trong thư mục gốc của tệp jar. Nếu không, bạn phải chỉ định thư mục trên chuỗi:

getResource("yourfolder/PlagiaLyzerIcon.png") 
+0

ngay cả khi tôi đặt đường dẫn cho thư mục, một lần nữa, nó hoạt động trong dự án chứ không phải với tệp Jar. và tôi không chắc vấn đề với mã bạn đã cung cấp là gì? Vấn đề constructor? –

+0

Tôi có nghĩa là mã này không hoạt động, this.getFrame(). SetIconImage ( new imageIcon (getClass(). GetClassLoader(). GetResource ("PlagiaLyzerIcon.png")) ); –

+1

ooo bây giờ tôi thấy vấn đề ... this.getFrame(). SetIconImage (new imageIcon (getClass(). GetClassLoader(). GetResource ("PlagiaLyzerIcon.png")). GetImage()); phải hoạt động – Hector

0

Bạn có chỉ định đường dẫn xây dựng cho biểu tượng của mình trong tùy chọn của Netbean trước khi xuất JAR không? Trên Eclipse nó được thực hiện bằng cách thêm một thư mục nguồn bên trong Đường dẫn xây dựng Java như được hiển thị trong số screenshot này. Nên giống như vậy trên Netbeans?

2

Đó là vì IDE Netbeans có đường dẫn lớp khác, so với khi chạy tệp jar độc lập (không có Ant).

Giả sử dự án Netbeans của bạn đang ở vị trí /project/:

Các classpath là: /project/build/classes/ và gốc /project/ dự án. Nếu các biểu tượng của bạn được lưu trữ trong: /project/myicons/, thì chúng là một phần của classpath, vì /project/ cũng vậy. Nhưng khi bạn xây dựng dự án của mình, chỉ các tệp trong /project/build/classes/ cuối cùng sẽ kết thúc trong tệp jar, những tệp này là "xây dựng" từ /projcet/src/.

Giải pháp:

Di chuyển các biểu tượng của bạn thành một nguồn gói: /project/src/myicons/

Hoặc, thêm thư mục /project/myicons/ các nguồn tin của bạn (kích chuột phải vào dự án của bạn -> Properties -> Sources -> thêm thư mục của bạn có)

+0

@Pindatjuh, tôi đã chuyển đến thư mục như bạn đề xuất, nhưng mã, this.getFrame(). SetIconImage (Toolkit.getDefaultToolkit(). GetImage ("PlagiaLyzerIcon.png")); dường như chỉ hoạt động trong thư mục gốc của dự án .. –

1

Thanks a lot ...

Đây mã mà làm việc cho tôi !!!!

BufferedImage image = null; 

    try { 
     image = ImageIO.read(getClass().getClassLoader().getResource("images/frame.png")); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


    super.setIconImage(image); 
0

Sử dụng NetBeans như bản thân mình, chỉ cần đặt logo (trong trường hợp của tôi mylogo.png) bên trong src/thư mục trong thư mục dự án của bạn. Đảm bảo kích thước là 32 x 32 pixel để đảm bảo chất lượng tốt nhất cho biểu tượng. Tôi không thể quản lý để thiết lập hình ảnh .ico như biểu tượng JFrame của tôi nhưng .png làm việc tốt. Bằng cách mở rộng JFrame, tôi trực tiếp thiết lập biểu tượng jar của tôi với:

Image getIcon() 
{ return Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("mylogo.png")); } 

setIconImage(getIcon()); 

Sau khi làm sạch và tạo jar, biểu tượng file jar vẫn không thay đổi (vẫn là biểu tượng jar mặc định) nhưng khi bạn thực hiện các tập tin jar sự biểu tượng trong thanh tiêu đề và thanh tác vụ sẽ là biểu tượng tùy chỉnh của bạn. Bạn có thể thay đổi biểu tượng tệp jar bằng cách tạo lối tắt và thay đổi biểu tượng cho lối tắt đó. Độ phân giải tốt nhất cho biểu tượng phím tắt là 512 x 512 pixel .ico

Các vấn đề liên quan