Ist es möglich, das Anwendungssymbol mit JavaFX zu ändern, oder muss dies mit Swing erfolgen?
172
Angenommen, Ihre Bühne ist "Bühne" und die Datei befindet sich im Dateisystem:
stage.getIcons().add(new Image("file:icon.png"));
Gemäß dem Kommentar unten müssen Sie stattdessen den folgenden Ansatz verwenden, wenn es in ein enthaltendes Glas eingewickelt ist:
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
stage.getIcons().add( new Image( <yourclassname>.class.getResourceAsStream( "icon.png" )));
Werken..dektop
Datei angeben . Siehe meine Beschreibung hierIch habe es versucht und es funktioniert total. Der Code lautet:
icon.png befindet sich im selben Ordner wie die Quelldateien.
quelle
Vollständiges Programm für den Anfang :) Dieses Programm setzt das Symbol für StackOverflowIcon.
Screnshot ausgeben
Der Code muss nicht geändert werden. Es funktioniert immer noch gut. Getestet und verifiziert in Java 1.8 (1.8.0_45). Der Pfad kann auf lokal oder remote eingestellt werden. Beide werden unterstützt.
ODER
Ich hoffe es hilft. Vielen Dank!!
quelle
Sie können es in fxml hinzufügen. Bühnenebene
quelle
Wenn Sie einen Bilderordner haben und das Symbol darin gespeichert ist, verwenden Sie diesen
und wenn Sie es direkt aus Ihrem Paket verwenden, was keine gute Praxis ist, verwenden Sie dies
und wenn Sie eine Ordnerstruktur haben und Ihr Symbol in dieser Verwendung haben
quelle
Befindet sich Ihre icon.png im Ressourcenverzeichnis und denken Sie daran, ein '/' einzugeben, bevor dies nicht funktioniert
quelle
Was halten Sie davon, ein neues Paket, dh image.icons, in Ihrem src-Verzeichnis zu erstellen und Ihre .png-Bilder dorthin zu verschieben? Dann müssen Sie nur schreiben:
Diese Lösung funktioniert perfekt für mich, aber ich bin mir immer noch nicht sicher, ob sie korrekt ist (Anfänger hier).
quelle
resources
Ordner abzulegen.Mit dieser Methode können Sie mehr als ein Symbol mit unterschiedlichen Größen hinzufügen. Die Bilder sollten unterschiedliche Größen desselben Bildes haben und die beste Größe wird ausgewählt.
eg. 16x16, 32,32
quelle
Der Bilderordner muss sich im Ressourcenordner befinden.
quelle
Mit dieser Codezeile können Sie Ihrer Anwendung ganz einfach ein Symbol hinzufügen
stage.getIcons (). add (neues Bild ("Bildpfad"));
quelle
Es ist eine gute Angewohnheit, einen Bilderordner in Ihrem src-Ordner zu erstellen und Bilder daraus abzurufen.
quelle
Ich habe dies in meiner Anwendung verwendet
Hier ist das Fenster die Bühne.
quelle
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:
Dadurch wird der Verknüpfung und der Taskleiste ein Symbol hinzugefügt.
quelle
Symbole zur Laufzeit umschalten:
Zusätzlich zu den Antworten hier habe ich festgestellt, 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 wäre hilfreich, wenn Sie das Symbol Ihrer 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:
Um von anderen Methoden oder Klassen auf die Bühne zuzugreifen, können Sie ein neues statisches Feld für die Bühne in Ihrer Hauptklasse erstellen, um von der start () -Methode darauf zugreifen zu können, indem Sie eine statische Methode einkapseln, auf die Sie von überall in Ihrer App zugreifen können .
quelle
Wenn Sie
Invalid URL or resource not found
Ihre icon.png in den Ordner "bin" in Ihrem Arbeitsbereich gestellt haben.quelle
Eine andere einfache Möglichkeit, ein eigenes Symbol in die Titelleiste von JavaFX einzufügen, besteht darin, das Bild mit der folgenden Methode zu Ihrer Primärstufe hinzuzufügen:
Stellen Sie sicher, dass Sie javafx.scene.image.Image importieren (wenn Sie eine Idee wie Netbeans verwenden, sollte dies automatisch für Sie erledigt werden).
quelle
Ich habe es versucht und es funktioniert:
quelle