Icono de la aplicación JavaFX

¿Es posible cambiar el icono de la aplicación usando JavaFX, o tiene que hacerse usando Swing?

Suponiendo que su etapa es “etapa” y el archivo está en el sistema de archivos:

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

Según el comentario siguiente, si está envuelto en un flask contenedor, deberá usar el siguiente enfoque:

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

Intenté esto y funciona totalmente. El código es:

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

icon.png está en la misma carpeta que los archivos fuente.

Progtwig completo para principiantes 🙂 Este progtwig establece el icono de desbordamiento de stack.

 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); } } 

Salida Screnshot

Captura de pantalla de JavaFX

Actualizado para JavaFX 8

No es necesario cambiar el código. Todavía funciona bien. Probado y verificado en Java 1.8 (1.8.0_45). La ruta se puede establecer en local o remota, ambas son compatibles.

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

O

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

enter image description here

Espero eso ayude. ¡¡Gracias!!

Si tiene una carpeta de imágenes y el icono está guardado, use este

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

y si lo está utilizando directamente desde su paquete, que no es una buena práctica, use esto

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

y si tienes una estructura de carpetas y tienes tu ícono dentro de ese uso

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

puedes agregarlo en fxml. Nivel de escenario

    

¿Qué piensas sobre la creación de un nuevo paquete, es decir, image.icons en tu directorio src y trasladando allí tus imágenes .png? Entonces solo necesitas escribir:

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

Esta solución funciona perfectamente para mí, pero aún no estoy seguro de si es correcta (principiante aquí).

 stage.getIcons().add(new Image(.class.getResourceAsStream("/icon.png"))); 

Si su icon.png está en el directorio de recursos y recuerde poner un ‘/’ antes de lo contrario, no funcionará

 stage.getIcons().add(new Image(.class.getResourceAsStream("/icon.png" ))); 

Puede agregar más de un ícono con diferentes tamaños usando este método. Las imágenes deben tener diferentes tamaños de la misma imagen y se elegirá el mejor tamaño. eg. 16x16, 32,32

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

Es un buen hábito hacer una carpeta de imágenes en su carpeta src y obtener imágenes de ella.

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

la carpeta de imágenes debe estar en la carpeta de Recursos.

Lo usé en mi aplicación

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

Aquí la ventana es el escenario.

stage.getIcons (). add (nueva imagen ((“nospaniol / ui / icons / nospaniol.png”)));

Intenté esto y funciona:

 stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png"))); 

Imagen image3 = nueva Imagen (“Ruta”);
stage.getIcons (). add (image3);

Otra forma fácil de insertar su propio icono en la barra de título en JavaFX es agregar la imagen a su etapa principal utilizando el siguiente método:

 Image ico = new Image("resources/images/iconLogo.png"); stage.getIcons().add(ico); 

Asegúrate de importar javafx.scene.image.Image (si utilizas un ide como netbeans, esto debería hacerse automáticamente).