it-swarm.com.de

JavaFX-Anwendungssymbol

Ist es möglich, das Anwendungssymbol mit JavaFX zu ändern, oder muss dies mit Swing erfolgen?

141
Sebb77

Angenommen, Ihre Bühne ist "stage" und die Datei befindet sich im Dateisystem:

stage.getIcons().add(new Image("file:icon.png"));

Wie in dem Kommentar unten beschrieben, müssen Sie, wenn es in einem enthaltenden Glas eingeschlossen ist, stattdessen die folgende Vorgehensweise verwenden:

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

Ich habe es versucht und es funktioniert total. Der Code lautet:

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

icon.png befindet sich im selben Ordner wie die Quelldateien.

66
user1736233

Volles Programm für Starter :) Dieses Programm setzt das Stack Overflow Icon.

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 ausgeben

JavaFX Screenshot

Für JavaFX 8 aktualisiert

Keine Notwendigkeit, den Code zu ändern. Es funktioniert immer noch gut. Getestet und verifiziert in Java 1.8 (1.8.0_45). Der Pfad kann auf local oder remote gesetzt werden. Beide werden unterstützt.

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

OR

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

enter image description here

Ich hoffe es hilft. Vielen Dank!!

64
Madan Sapkota

sie können es in fxml hinzufügen. Bühnenebene

<icons>
    <Image url="@../../../my_icon.png"/>
</icons>
6
Dmitrij Krupa

Wenn Sie über einen Bilderordner verfügen und das Symbol in diesem Ordner gespeichert ist, verwenden Sie diesen Ordner 

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

wenn Sie es direkt aus Ihrem Paket verwenden, ist dies keine gute Praxis

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

und wenn Sie über eine Ordnerstruktur verfügen und Ihr Symbol darin verwendet wird

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

Mit dieser Codezeile können Sie Ihrer Anwendung einfach ein Symbol hinzufügen

stage.getIcons (). add (neues Bild ("Bildpfad"));

Was halten Sie davon, ein neues Paket, dh image.icons, in Ihrem SRC-Verzeichnis zu erstellen und Ihre .png-Bilder dorthin zu verschieben? Dann musst du nur noch schreiben:

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

Diese Lösung funktioniert perfekt für mich, aber ich bin mir nicht sicher, ob sie korrekt ist (Anfänger hier).

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

Wenn sich Ihr icon.png in der Ressource befindet, denken Sie daran, ein '/' zu setzen, bevor es sonst nicht funktioniert

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

Mit dieser Methode können Sie mehr als ein Symbol mit unterschiedlichen Größen hinzufügen. Die Bilder sollten unterschiedliche Größen des gleichen Bildes haben, und die beste Größe wird ausgewählt. eg. 16x16, 32,32

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

bilderordner müssen sich im Ressourcenordner befinden.

1
PsyhoZOOM

Wenn Sie die JAR-Datei ausführen, ändert der von Michael Berry angegebene Code das Symbol in der Titelleiste und in der Taskleiste. Das Verknüpfungssymbol kann nicht geändert werden.

Wenn Sie ein mit com.zenjava kompiliertes natives Programm ausführen, müssen Sie dem Programmsymbol einen Link hinzufügen:

<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>

Dadurch wird der Verknüpfung und der Taskleiste ein Symbol hinzugefügt.

0

Icons zur Laufzeit umschalten:

Zusätzlich zu den Antworten hier stellte ich fest, dass Sie, sobald Sie Ihrer Anwendung zum ersten Mal ein Symbol zugewiesen haben, es nicht mehr umschalten können, indem Sie einfach ein neues Symbol zu Ihrer Bühne hinzufügen (dies ist hilfreich, wenn Sie das Symbol Ihrer Anwendung umschalten müssen App von Ein/Aus aktiviert/deaktiviert).

Um ein neues Symbol zur Laufzeit festzulegen, verwenden Sie getIcons (). Remove (0), bevor Sie versuchen, ein neues Symbol hinzuzufügen. Dabei ist 0 der Index des Symbols, das Sie überschreiben möchten, wie hier gezeigt:

//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")));

Um von anderen Methoden oder Klassen aus auf die Bühne zuzugreifen, können Sie ein neues statisches Feld für die Bühne in Ihrer Hauptklasse erstellen und von der start () -Methode aus darauf zugreifen, indem Sie eine statische Methode einkapseln, auf die Sie von überall in Ihrer App zugreifen können .

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")));
}
} 
0
Israelm

Ich habe dies in meiner Bewerbung verwendet

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

Hier ist das Fenster die Bühne.

0
Moishin
stage.getIcons().add(new Image("/images/logo_only.png"));

Es ist eine gute Angewohnheit, Bilderordner in Ihrem SRC-Ordner zu erstellen und Bilder davon zu erhalten.

0
Harshad Vaghela

stage.getIcons (). add (neues Bild (("nospaniol/ui/icons/nospaniol.png")));

0
Nospaniol Noah

Wenn Sie Invalid URL or resource not found erhalten haben, legen Sie Ihr icon.png im "bin" -Ordner Ihres Arbeitsbereichs ab.

0
Tim113