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


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;
 
 @Override
 public void start(Stage primaryStage) {
 
 Button btnLoad = new Button("Load");
 btnLoad.setOnAction(btnLoadEventListener);
 
 myImageView = new ImageView(); 
 
 VBox rootBox = new VBox();
 rootBox.getChildren().addAll(btnLoad, myImageView);
 
 Scene scene = new Scene(rootBox, 300, 300);
 
 primaryStage.setTitle("java-buddy.blogspot.com");
 primaryStage.setScene(scene);
 primaryStage.show();
 }
 public static void main(String[] args) {
 launch(args);
 }
 
 EventHandler<ActionEvent> btnLoadEventListener
 = new EventHandler<ActionEvent>(){
 @Override
 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);
 myImageView.setImage(image);
 } catch (IOException ex) {
 Logger.getLogger(JavaFXPixel.class.getName()).log(Level.SEVERE, null, ex);
 }
 }
 };
}


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


8 comments:

  1. This comment has been removed by the author.

    Reply Delete
  2. Neither it doesn't work nor it does't give an error :/

    Reply Delete
  3. Thanks a lot, this is a good example for JavaFX beginners :)

    Reply Delete
  4. Great tutorial.

    But how would one accomplish this with other file types, along with video and audio formats?

    I have built a media player that can run video and audio files, using the FileChooser.

    But your method seems to neither work or produce an error.

    I have coded two separate events for the "load" button. When I compile and run the program and open the FileChooser box, and choose the format(in this case, .JPEG), I can select a file but nothing appears on my scene, even though I explicitly added the ImageView instance to my Pane() class.

    Any ideas?

    Reply Delete
  5. How i can save this myImageView.setImage(image); on my database ?

    Reply Delete

Subscribe to: Post Comments (Atom)

AltStyle によって変換されたページ (->オリジナル) /