Tuesday, January 8, 2013

Use JavaFX FileChooser to open image file, and display on ImageView

The example demonstrate how to implement JavaFX FileChooser to open image file (jpg or png), and display it in a ImageView.

Use JavaFX FileChooser to open image file, and display on ImageView
Use JavaFX FileChooser to open image file, and display on ImageView

package javafxpixel;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
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.Stage;
import javax.imageio.ImageIO;

 * @web http://java-buddy.blogspot.com/
public class JavaFXPixel extends Application {
    ImageView myImageView;
    public void start(Stage primaryStage) {
        Button btnLoad = new Button("Load");
        myImageView = new ImageView();        
        VBox rootBox = new VBox();
        rootBox.getChildren().addAll(btnLoad, myImageView);
        Scene scene = new Scene(rootBox, 300, 300);

    public static void main(String[] args) {
    EventHandler<ActionEvent> btnLoadEventListener
    = new EventHandler<ActionEvent>(){

        public void handle(ActionEvent t) {
            FileChooser fileChooser = new FileChooser();
            //Set extension filter
            FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG");
            FileChooser.ExtensionFilter extFilterPNG = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.PNG");
            fileChooser.getExtensionFilters().addAll(extFilterJPG, extFilterPNG);
            //Show open file dialog
            File file = fileChooser.showOpenDialog(null);
            try {
                BufferedImage bufferedImage = ImageIO.read(file);
                Image image = SwingFXUtils.toFXImage(bufferedImage, null);
            } catch (IOException ex) {
                Logger.getLogger(JavaFXPixel.class.getName()).log(Level.SEVERE, null, ex);


- Make ImageView scrollable, in ScrollPane.
- Auto fit JavaFX 2 ImageView
- Load image file as InputStream