JavaFXを使用してアプリケーションアイコンを変更することは可能ですか、それともSwingを使用して行う必要がありますか?
ステージが「ステージ」であり、ファイルがファイルシステム上にあると仮定します。
stage.getIcons().add(new Image("file:icon.png"));
以下のコメントによると、それを含むjarにラップされている場合は、代わりに次のアプローチを使用する必要があります。
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
私はこれを試しましたが、完全に機能します。コードは次のとおりです。
stage.getIcons().add(
new Image(
<yourclassname>.class.getResourceAsStream( "icon.png" )));
icon.pngは、ソースファイルと同じフォルダーの下にあります。
初心者向けの完全なプログラム:)このプログラムは、StackOverflowIconのアイコンを設定します。
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);
}
}
出力ショット
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"));
それが役に立てば幸い。ありがとう!!
fxmlに追加できます。ステージレベル
<icons>
<Image url="@../../../my_icon.png"/>
</icons>
画像フォルダがあり、アイコンが保存されている場合、これを使用します
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")));
Srcディレクトリにimage.iconsという新しいパッケージを作成し、そこに.png画像を移動することについてどう思いますか?あなたが書く必要があるのは:
Image image = new Image("/image/icons/nameOfImage.png");
primaryStage.getIcons().add(image);
このソリューションは私には完璧に機能しますが、それでも正しいかどうかはわかりません(ここの初心者)。
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));
あなたのicon.pngがリソースディレクトリにある場合、それの前に「/」を置くことを忘れないでください。
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png" )));
この方法を使用すると、サイズが異なる複数のアイコンを追加できます。画像は同じ画像の異なるサイズである必要があり、最適なサイズが選択されます。 eg. 16x16, 32,32
このコード行を使用して、アプリケーションにアイコンを簡単に配置できます
stage.getIcons()。add(new Image( "image path"));
stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png")));
imagesフォルダーはResourceフォルダーにある必要があります。
Jarファイルを実行すると、Michael Berryによって指定されたコードにより、タイトルバーとタスクバーのアイコンが変更されます。ショートカットアイコンは変更できません。
Com.zenjavaでコンパイルされたネイティブプログラムを実行する場合、プログラムアイコンへのリンクを追加する必要があります。
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
...
<bundleArguments>
<icon>${project.basedir}/src/main/resources/images/filename.ico</icon>
</bundleArguments>
</configuration>
</plugin>
これにより、ショートカットとタスクバーにアイコンが追加されます。
ランタイムでアイコンを切り替える:
ここでの応答に加えて、初めてアイコンをアプリケーションに割り当てた後、ステージに新しいアイコンを追加するだけでは切り替えられないことがわかりました(これは、アイコンを切り替える必要がある場合に役立ちますオン/オフからのアプリの有効化/無効化)。
実行時に新しいアイコンを設定するには、新しいアイコンを追加する前にgetIcons()。remove(0)を使用します。0は次のようにオーバーライドするアイコンのインデックスです。
//Setting icon by first time (You can do this on your start method).
stage.getIcons().add(new Image(getClass().getResourceAsStream("enabled.png")));
//Overriding app icon with a new status (This can be in another method)
stage.getIcons().remove(0);
stage.getIcons().add(new Image(getClass().getResourceAsStream("disabled.png")));
他のメソッドまたはクラスからステージにアクセスするには、メインクラスのステージに新しい静的フィールドを作成して、アプリのどこからでもアクセスできる静的メソッドにカプセル化することにより、start()メソッドからアクセスできるようにします。 。
public class MainApp extends Application {
private static Stage stage;
public static Stage getStage() { return stage; }
@Override public void start(Stage primaryStage) {
stage = primaryStage
stage.getIcons().add(new Image(getClass().getResourceAsStream("enabled.png")));
}
}
public class AnotherClass {
public void setStageTitle(String newTitle) {
MainApp.getStage().setTitle(newTitle);
MainApp.getStage().getIcons().remove(0);
MainApp.getStage().getIcons().add(new Image(getClass().getResourceAsStream("disabled.png")));
}
}
アプリケーションでこれを使用しました
Image icon = new Image(getClass().getResourceAsStream("icon.png"));
window.getIcons().add(icon);
ここがウィンドウです。
stage.getIcons().add(new Image("/images/logo_only.png"));
Srcフォルダーにimagesフォルダーを作成し、そこから画像を取得するのは良い習慣です。
stage.getIcons()。add(new Image(( "nospaniol/ui/icons/nospaniol.png")));
Invalid URL or resource not found
を取得した場合は、ワークスペースの「bin」フォルダーにicon.pngを配置します。