Est-il possible de changer l'icône de l'application en utilisant JavaFX, ou faut-il le faire avec Swing?
172
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..dektop
fichier approprié . Voir ma description iciJ'ai essayé cela et cela fonctionne totalement. Le code est:
icon.png se trouve dans le même dossier que les fichiers source.
la source
Programme complet pour les démarreurs :) Ce programme définit l'icône pour StackOverflowIcon.
Screnshot de sortie
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.
OU
J'espère que ça aide. Merci!!
la source
vous pouvez l'ajouter en fxml. Niveau de scène
la source
Si vous avez un dossier d'images et que l'icône est enregistrée, utilisez ce
et si vous l'utilisez directement depuis votre package, ce qui n'est pas une bonne pratique, utilisez ceci
et si vous avez une structure de dossiers et que vous avez votre icône à l'intérieur, utilisez
la source
Si votre icon.png est dans le répertoire de ressources et n'oubliez pas de mettre un '/' avant sinon cela ne fonctionnera pas
la source
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:
Cette solution fonctionne parfaitement pour moi, mais je ne suis toujours pas sûr qu'elle soit correcte (débutant ici).
la source
resources
dossier.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
la source
Le dossier images doit se trouver dans le dossier Resource.
la source
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"));
la source
C'est une bonne habitude de créer un dossier images dans votre dossier src et d'en extraire des images.
la source
J'ai utilisé ceci dans mon application
Ici, la fenêtre est la scène.
la source
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:
Cela ajoutera une icône au raccourci et à la barre des tâches.
la source
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:
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 .
la source
Si vous avez
Invalid URL or resource not found
mis votre icon.png dans le dossier "bin" de votre espace de travail.la source
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:
Assurez-vous que votre import javafx.scene.image.Image (si vous utilisez un ide comme netbeans, cela devrait être fait automatiquement pour vous).
la source
J'ai essayé ceci et cela fonctionne:
la source