2012-04-23 49 views
10

我曾嘗試如何更改我的應用軟件的Java FX 2.0

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

但我不知道是怎麼回事錯一個階段的標題欄上的圖標..

請幫幫我。提前致謝。

+1

將錯誤消息附加到您的問題(如果有)。 – 2012-04-23 10:36:52

+0

我猜沒找到attuncore.jpg。 – jewelsea 2012-04-23 21:57:23

+1

問題是我沒有收到任何錯誤。 – 2012-04-24 04:50:23

回答

1

您的圖片尺寸是否正確? Javadoc中說明:

公衆最終ObservableList getIcons()

獲取窗口裝飾中使用的圖標和圖像最小化時 。圖像應該是相同圖像的不同尺寸,並選擇最佳尺寸,例如。 16×16,32,32。

+0

謝謝謝爾蓋,但圖像大小並不影響我的看法。但是,我終於通過設置獨立工作目錄的屬性來打包我的主和圖像所在的位置,最終得到了解決方案。 – 2012-04-26 10:17:19

+0

哦,圖像發現是一個問題,很好,你已經找到了它。有一堆類似的問題,例如:http://stackoverflow.com/questions/10062270/how-to-target-a-file-a-path-to-it-in-java-javafx – 2012-04-26 11:32:52

1

通過將獨立工作目錄的屬性設置爲放置我的主和圖像的位置,我找到了解決方案。

5

您可以從classpath中這樣加載圖像:

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

其中XYZ是一些類名(也許你正在加載從圖像中的一個)和xyz.png是圖像文件的名稱,放入一個包含在你的類路徑中的目錄(或JAR文件)。

如果您想將圖像放在源文件旁邊,則必須省略/字符。您的IDE需要配置爲將源文件(如* .png)從src複製到bin目錄。但這應該是標準的行爲。

44

初學者的完整程序:)此程序設置堆棧溢出圖標。

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); 
    } 
} 

輸出Screnshot

JavaFX Screenshot

更新了JavaFX的8

無需更改代碼。它仍然正常工作。在Java 1.8(1.8.0_45)中進行了測試和驗證。路徑可以設置爲本地或遠程都支持。

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

OR

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

enter image description here

希望它能幫助。謝謝!!

+0

我不知道怎麼來沒有機構投票給你,謝謝你的回答 – 2013-04-09 13:45:55

+0

尺寸是否重要? c: – codepleb 2015-12-15 20:02:56

+0

完美答案,尺寸看起來並不重要。 – 2017-03-09 19:11:11

1

不要忘記做進口

import javafx.scene.image.Image; 

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

與你的圖標替換"myicon.png"。在這種情況下,它與java類在同一個文件夾中。

0

對於那些誰用了一個問題:

無效網址:無效的URL或資源沒有找到

最好的解決辦法是讓新包即image.icons並搬到那裏你。 PNG圖像。那麼你只需要寫:

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

我希望這可以幫助別人!

相關問題