| 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
This comment has been removed by the author.
ReplyDeleteThanks)))
ReplyDeleteNeither it doesn't work nor it does't give an error :/
ReplyDeleteRe-test on Ubuntu GNOME 15.10/NetBeans 8.1.
DeleteThanks a lot, this is a good example for JavaFX beginners :)
ReplyDeleteGreat tutorial.
ReplyDeleteBut 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?
thanks :)
ReplyDeleteHow i can save this myImageView.setImage(image); on my database ?
ReplyDelete