Réponses:
En supposant que votre étape est "étape" et que le fichier est sur le système de fichiers:
stage.getIcons().add(new Image("file:icon.png"));
Selon le commentaire ci-dessous, s'il est enveloppé dans un fichier jar contenant, vous devrez utiliser l'approche suivante à la place:
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
stage.getIcons().add( new Image( <yourclassname>.class.getResourceAsStream( "icon.png" )));
fonctionne.
J'ai essayé cela et cela fonctionne totalement. Le code est:
stage.getIcons().add(
new Image(
<yourclassname>.class.getResourceAsStream( "icon.png" )));
icon.png se trouve dans le même dossier que les fichiers source.
Programme complet pour les démarreurs :) Ce programme définit l'icône pour 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);
}
}
Screnshot de sortie
Mis à jour pour JavaFX 8
Pas besoin de changer le code. Cela fonctionne toujours bien. Testé et vérifié en Java 1.8 (1.8.0_45). Le chemin peut être défini sur local ou distant, les deux sont pris en charge.
stage.getIcons().add(new Image("/path/to/javaicon.png"));
OU
stage.getIcons().add(new Image("https://example.com/javaicon.png"));
J'espère que ça aide. Merci!!
vous pouvez l'ajouter en fxml. Niveau de scène
<icons>
<Image url="@../../../my_icon.png"/>
</icons>
Si vous avez un dossier d'images et que l'icône est enregistrée, utilisez ce
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/images/comparison.png")));
et si vous l'utilisez directement depuis votre package, ce qui n'est pas une bonne pratique, utilisez ceci
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("comparison.png")));
et si vous avez une structure de dossiers et que vous avez votre icône à l'intérieur, utilisez
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("../images/comparison.png")));
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));
Si votre icon.png est dans le répertoire de ressources et n'oubliez pas de mettre un '/' avant sinon cela ne fonctionnera pas
Que pensez-vous de la création d'un nouveau package ie image.icons dans votre répertoire src et d'y déplacer vos images .png? Il vous suffit d'écrire:
Image image = new Image("/image/icons/nameOfImage.png");
primaryStage.getIcons().add(image);
Cette solution fonctionne parfaitement pour moi, mais je ne suis toujours pas sûr qu'elle soit correcte (débutant ici).
resources
dossier.
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png" )));
Vous pouvez ajouter plus d'une icône avec des tailles différentes en utilisant cette méthode. Les images doivent être de tailles différentes de la même image et la meilleure taille sera choisie.
eg. 16x16, 32,32
stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png")));
Le dossier images doit se trouver dans le dossier Resource.
Vous pouvez facilement mettre une icône dans votre application en utilisant cette ligne de code
stage.getIcons (). add (nouvelle image ("chemin de l'image"));
stage.getIcons().add(new Image("/images/logo_only.png"));
C'est une bonne habitude de créer un dossier images dans votre dossier src et d'en extraire des images.
Si vous exécutez le fichier jar, le code spécifié par Michael Berry changera l'icône dans la barre de titre et dans la barre des tâches. L'icône de raccourci ne peut pas être modifiée.
Si vous exécutez un programme natif compilé avec com.zenjava, vous devez ajouter un lien vers l'icône du programme:
<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>
Cela ajoutera une icône au raccourci et à la barre des tâches.
Activer / désactiver les icônes à l'exécution:
En plus des réponses ici, j'ai trouvé qu'une fois que vous avez attribué une icône à votre application la première fois, vous ne pouvez pas la basculer en ajoutant simplement une nouvelle icône à votre scène (cela serait utile si vous devez basculer l'icône de votre app d'activation / désactivation activée / désactivée).
Pour définir une nouvelle icône pendant l'exécution, utilisez getIcons (). Remove (0) avant d'essayer d'ajouter une nouvelle icône, où 0 est l'index de l'icône que vous souhaitez remplacer, comme illustré ici:
//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")));
Pour accéder à l'étape à partir d'autres méthodes ou classes, vous pouvez créer un nouveau champ statique pour l'étape dans votre classe principale afin de pouvoir y accéder à partir de la méthode start () en encapsulant une méthode statique à laquelle vous pouvez accéder de n'importe où dans votre application .
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")));
}
}
Un autre moyen simple d'insérer votre propre icône sur la barre de titre de JavaFX consiste à ajouter l'image à votre scène principale en utilisant la méthode suivante:
Image ico = new Image("resources/images/iconLogo.png");
stage.getIcons().add(ico);
Assurez-vous que votre import javafx.scene.image.Image (si vous utilisez un ide comme netbeans, cela devrait être fait automatiquement pour vous).
J'ai essayé ceci et cela fonctionne:
stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png")));