2012-04-23 48 views
10

Tôi đã thử cácLàm thế nào để thay đổi các biểu tượng trên thanh tiêu đề của một giai đoạn trong java fx 2.0 của ứng dụng của tôi

stage.getIcons().add(new Image("attuncore.jpg")); 

Nhưng tôi không biết những gì đang xảy ra sai ..

Hãy Cứu giúp. Cảm ơn trước.

+1

Nối thông báo lỗi vào câu hỏi của bạn nếu có. –

+0

Tôi đoán attuncore.jpg không được tìm thấy. – jewelsea

+1

Vấn đề là tôi không nhận được bất kỳ lỗi nào. –

Trả lời

1

Hình ảnh của bạn có kích thước chính xác không? bang Javadoc:

công getIcons ObservableList thức()

Gets những hình ảnh biểu tượng được sử dụng trong trang trí cửa sổ và khi giảm thiểu. Các hình ảnh phải có kích thước khác nhau của cùng một hình ảnh và kích thước tốt nhất sẽ được chọn, ví dụ: 16x16, 32,32.

+0

Cảm ơn Sergey nhưng kích thước hình ảnh không ảnh hưởng đến điều đó. nhưng yeah tôi cuối cùng đã nhận được giải pháp bằng cách thiết lập các thuộc tính của thư mục làm việc độc lập để gói nơi chính của tôi và hình ảnh được đặt. –

+0

oh, tìm kiếm hình ảnh là một vấn đề, tuyệt vời bạn đã tìm ra nó. Có một loạt các vấn đề tương tự, ví dụ: http://stackoverflow.com/questions/10062270/how-to-target-a-file-a-path-to-it-in-java-javafx –

1

Giải pháp tôi tìm thấy bằng cách đặt thuộc tính của thư mục làm việc độc lập để đóng gói nơi đặt chính và hình ảnh của tôi.

5

Bạn có thể tải hình ảnh từ classpath như thế này:

new Image(XYZ.class.getResourceAsStream("/xyz.png")) 

trong đó XYZ là một số classname (có lẽ một trong những bạn đang tải các hình ảnh từ) và xyz.png là tên của tập tin hình ảnh của bạn , đặt trong một thư mục (hoặc tệp JAR) được bao gồm trong classpath của bạn.

Nếu bạn muốn đặt hình ảnh bên cạnh tệp nguồn, bạn phải bỏ qua ký tự /. IDE của bạn cần phải được cấu hình để sao chép các tài nguyên (như * .png) từ thư mục src sang bin, sau đó. Nhưng điều này được cho là hành vi tiêu chuẩn.

44

Chương trình đầy đủ cho người mới bắt đầu :) Chương trình này đặt Biểu tượng ngăn xếp ngăn xếp.

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.image.Image; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

public class StackoverflowIcon extends Application { 

    @Override 
    public void start(Stage stage) { 
     StackPane root = new StackPane(); 
     // set icon 
     stage.getIcons().add(new Image("/path/to/stackoverflow.jpg")); 
     stage.setTitle("Wow!! Stackoverflow Icon"); 
     stage.setScene(new Scene(root, 300, 250)); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

Output Screnshot

JavaFX Screenshot

Cập nhật cho JavaFX 8

Không cần phải thay đổi mã. Nó vẫn hoạt động tốt. Đã kiểm tra và xác minh trong Java 1.8 (1.8.0_45). Đường dẫn có thể được đặt thành cục bộ hoặc từ xa đều được hỗ trợ.

stage.getIcons().add(new Image("/path/to/javaicon.png")); 

HOẶC

stage.getIcons().add(new Image("https://example.com/javaicon.png")); 

enter image description here

Hy vọng nó giúp. Cảm ơn!!

+0

Tôi tự hỏi làm thế nào đến không có cơ thể lên bầu bạn, nhờ câu trả lời –

+0

Kích thước có quan trọng không? c: – codepleb

+0

Câu trả lời hoàn hảo và kích thước không có vẻ quan trọng. –

1

Dont quên làm việc nhập khẩu

import javafx.scene.image.Image; 

Image icon = new Image(getClass().getResourceAsStream("myicon.png")); 
stage.getIcons().add(icon); 

Thay "myicon.png" với biểu tượng của bạn. Trong trường hợp này, nó nằm trong cùng thư mục với lớp java của bạn.

0

Đối với những người đã có một vấn đề với:

URL không hợp lệ: URL hoặc tài nguyên không hợp lệ không tìm thấy

Giải pháp tốt nhất là làm mới image.icons gói tức và di chuyển có của bạn. png hình ảnh. Sau đó, bạn chỉ cần viết:

Image image = new Image("/image/icons/list.png"); 
primaryStage.getIcons().add(image); 

Tôi hy vọng điều này sẽ giúp ai đó!

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