Te mostraremos como visualizar una Imagen con JavaFX seleccionado el archivo de la imagen con un botón en la interfaz y desplegándola en un contenedor VBox.
» Ver ejemplo anterior de JavaFX
En este ejemplo usamos como referencia otro anterior que ya hicimos, pero en una versión de Java 8 y algunas cosas han cambiado para Java.
En nuestros ejemplos usamos NetBeans y es posible que te hayas encontrado con el siguiente error:
Error: JavaFX runtime components are missing, and are required to run this application Command execution failed
Este error aparece debido a que en versiones recientes de Java es necesario crear módulos y debemos inicializar las condiciones de JavaFX antes de ejecutar nuestro ejemplo, una nueva característica agregada a partir de Java 9. Para evitar este paso crearemos dos clases de Java: Main.java y JavaFXImagen.java.

El código de Main.java es el siguiente:
package com.decodigo.ejemplos;
/**
*
* @author decodigo
*/
public class Main {
public static void main(String[] args) {
JavaFXImagen.main(args);
}
}
Ahora nuestra clase JavaFXImagen.java:
package com.decodigo.ejemplos;
import java.io.File;
import java.io.FileInputStream;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.stage.Stage;
/**
*
* @author decodigo.com
*/
public class JavaFXImagen extends Application {
@Override
public void init() throws Exception {
super.init();
System.out.println("Realice las inicializaciones necesarias aquí.");
}
@Override
public void start(Stage primaryStage) throws Exception {
final ImageView imageView = new ImageView();
Button button = new Button("Seleccione Imagen");
button.setOnAction(value -> {
try {
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Buscar Imagen");
fileChooser.getExtensionFilters().addAll(new ExtensionFilter("Archivos Imagen", "*.png", "*.jpg"));
File selectedFile = fileChooser.showOpenDialog(primaryStage);
if (selectedFile != null) {
FileInputStream input = new FileInputStream(selectedFile);
Image image = new Image(input);
imageView.setImage(image);
}
} catch (Exception e) {
System.out.println("Debes manejar el error: " + e.getMessage());
}
});
VBox vbox = new VBox(button, imageView);
Scene scene = new Scene(vbox, 900, 600);
primaryStage.setTitle("Visualizador de Imágenes");
primaryStage.setScene(scene);
primaryStage.show();
}
@Override
public void stop() throws Exception {
super.stop();
System.out.println("Destruye los recursos. Realice limpieza.");
}
public static void main(String[] args) {
launch(args);
}
}
Una breve explicación del código, las siguientes líneas instancian nuestro botón y el componente que visualizará la imagen:
final ImageView imageView = new ImageView();
Button button = new Button("Seleccione Imagen");
Creamos ahora una función para escuchar eventos sobre el botón y lanzamos un FileChooser al cual agregamos un filtro con las extensiones de imágenes que nos interesa visualizar:
button.setOnAction(value -> {
try {
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Buscar Imagen");
fileChooser.getExtensionFilters().addAll(new ExtensionFilter("Archivos Imagen", "*.png", "*.jpg"));
File selectedFile = fileChooser.showOpenDialog(primaryStage);
if (selectedFile != null) {
FileInputStream input = new FileInputStream(selectedFile);
Image image = new Image(input);
imageView.setImage(image);
}
} catch (Exception e) {
System.out.println("Debes manejar el error: " + e.getMessage());
}
});
Por último, creamos un contenedor que agregamos a una escena y después al escenario principal. Finalmente lo mostramos como ventana:
VBox vbox = new VBox(button, imageView);
Scene scene = new Scene(vbox, 900, 600);
primaryStage.setTitle("Visualizador de Imágenes");
primaryStage.setScene(scene);
primaryStage.show();
Al ejecutar como «archivo ejecutable» desde NetBeans a Main.java aparecerá nuestra ventana con un único elemento, nuestro botón de selección:

Al dar clic en el botón, aparecerá la ventana de selección de archivos cuya apariencia dependerá del sistema operativo en el que estés trabajando:

Nuestra imagen aparecerá desplegada después de que selecciones el archivo y des clic en «Abrir».

Este ejemplo para visualizar una Imagen con JavaFX es sencillo, para comenzar y entender como funciona JavaFX y te servirá.
Ver documentación:https://docs.oracle.com/javase/8/javafx/api/toc.htm
Más: https://openjfx.io/
Más información en inglés: https://geekole.com/display-an-image-in-javafx/