2012-04-12 3 views

答えて

152

は、「ステージ」で、ファイルはファイルシステム上にある:

以下のコメントを1として
stage.getIcons().add(new Image("file:icon.png")); 

、それはあなたが代わりに以下の方法を使用する必要があります含む瓶に包まれていた場合:

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png"))); 
+5

また、アイコンをアプリケーションのショートカットとしてインストールする場合、WebStartをデプロイメントテクノロジとして使用する場合、jnlpファイル(http:// docs)に適切なアイコン/ショートカット/デスクトップ設定を設定することができます。 oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html – jewelsea

+9

異なるサイズの複数のイメージを追加することができ、JavaFXは最適なイメージを選択します。タスクバーのサイズが異なり、タイトルバーも異なるためです。 – drzymala

+9

これは、ファイルがファイルシステム内にあるときにのみ機能すると思います。アイコンがjarファイル内にラップされ、クラスパス内でラップされるより一般的な状況では、これは私のためには機能しませんでした。 'stage.getIcons()。add( 新しいイメージ( .class.getResourceAsStream(" icon.png "));)を使用している他のソリューションの1つです。 –

58

私はこれを試して完全に動作します。コードは:

stage.getIcons().add(
    new Image(
     <yourclassname>.class.getResourceAsStream("icon.png"))); 

icon.pngは、ソースファイルと同じフォルダの下にあります。

-2

のJavaFXでのタイトルバーに独自のアイコンを挿入するためのもう1つの簡単な方法は、以下の方法を使用して、主要なステージに画像を追加することです:

Image ico = new Image("resources/images/iconLogo.png"); 
stage.getIcons().add(ico); 

、インポートjavafx.scene.image.Imageていることを確認します(netbeansのようなideを使用している場合、これは自動的に行われるべきです)。

+34

はそうではありません**正確に* *上記の投稿は何ですか? – XXL

53

スターターのための完全なプログラム:)このプログラムはスタックオーバーフローのアイコンを設定しました。 JavaFXの8

ためのコードを変更する必要を更新しない

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

。それはまだ正常に動作します。 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

これはsvgをサポートしていますか? – qed

+0

@qed、私はSVGがサポートされているとは思わないが、私は100%確実ではない。あなたはそれをテストすることができます。 –

1
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png"))); 

そうでなければ、私はこれを試してみましたが、それが動作

0

を動作しません前に、あなたのicon.pngのは、リソースのディレクトリにあり、「/」を置くことを忘れないでください場合:

stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png"))); 
1
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png"))); 

この方法を使用すると、サイズの異なる複数のアイコンを追加できます。画像は同じ画像の異なるサイズで、最適なサイズが選択されます。 eg. 16x16, 32,32

5

あなたはimagesフォルダを持っており、アイコンがその使用に保存されている場合は、この

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/images/comparison.png"))); 

、あなたは直接グッドプラクティスの使用この

ではありませんあなたのパッケージからそれを使用している場合
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("comparison.png"))); 

と、フォルダ構造を持っていて、その中にあなたのアイコンが使用している場合

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("../images/comparison.png"))); 
2

srcディレクトリにimage.iconsという新しいパッケージを作成し、そこに.pngイメージを移動するとどう思いますか?あなただけ記述する必要があるより:

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

このソリューションは、完全に私の作品が、それでも私はそれが(ここでは初心者)が正しいかどうか分かりません。

5

あなたはfxmlで追加できます。ステージレベル

<icons> 
    <Image url="@../../../my_icon.png"/> 
</icons> 
0
stage.getIcons().add(new Image("/images/logo_only.png")); 

あなたのsrcフォルダ内の画像フォルダを作り、そこから画像を取得するには良い習慣です。

+0

[別の回答](https://stackoverflow.com/a/10122335/8283469)は既に同じことを説明しているので、この回答は完全に不要です。 –

0
stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png"))); 

イメージフォルダはリソースフォルダにある必要があります。

+1

[別の回答](https://stackoverflow.com/a/10122335/8283469)はすでに同じことを説明しているため、この回答は完全に不要です。 –

0

私はここでアプリケーション

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

ウィンドウでこれを使用するには、ステージです。

関連する問題