Monday, May 14, 2012

Read text file with JavaFX FileChooser

Example to choose and read text file with JavaFX FileChooser.



package javafxfilechooser;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextAreaBuilder;
import javafx.scene.layout.VBox;
import javafx.scene.layout.VBoxBuilder;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
/**
 *
 * @web http://java-buddy.blogspot.com/
 */
public class JavaFX_OpenFile extends Application {
 /**
 * @param args the command line arguments
 */
 public static void main(String[] args) {
 launch(args);
 }
 
 @Override
 public void start(final Stage primaryStage) {
 primaryStage.setTitle("java-buddy.blogspot.com");
 Group root = new Group();
 
 
 
 final TextArea textArea = TextAreaBuilder.create()
 .prefWidth(400)
 .wrapText(true)
 .build();
 
 ScrollPane scrollPane = new ScrollPane();
 scrollPane.getStyleClass().add("noborder-scroll-pane");
 scrollPane.setContent(textArea);
 scrollPane.setFitToWidth(true);
 scrollPane.setPrefWidth(400);
 scrollPane.setPrefHeight(180);
 
 Button buttonLoad = new Button("Load");
 buttonLoad.setOnAction(new EventHandler<ActionEvent>(){
 @Override
 public void handle(ActionEvent arg0) {
 FileChooser fileChooser = new FileChooser();
 
 //Set extension filter
 FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("TXT files (*.txt)", "*.txt");
 fileChooser.getExtensionFilters().add(extFilter);
 
 //Show save file dialog
 File file = fileChooser.showOpenDialog(primaryStage);
 if(file != null){
 textArea.setText(readFile(file));
 }
 }
 
 });
 
 VBox vBox = VBoxBuilder.create()
 .children(buttonLoad, scrollPane)
 .build();
 
 root.getChildren().add(vBox);
 primaryStage.setScene(new Scene(root, 500, 400));
 primaryStage.show();
 }
 
 private String readFile(File file){
 StringBuilder stringBuffer = new StringBuilder();
 BufferedReader bufferedReader = null;
 
 try {
 bufferedReader = new BufferedReader(new FileReader(file));
 
 String text;
 while ((text = bufferedReader.readLine()) != null) {
 stringBuffer.append(text);
 }
 } catch (FileNotFoundException ex) {
 Logger.getLogger(JavaFX_OpenFile.class.getName()).log(Level.SEVERE, null, ex);
 } catch (IOException ex) {
 Logger.getLogger(JavaFX_OpenFile.class.getName()).log(Level.SEVERE, null, ex);
 } finally {
 try {
 bufferedReader.close();
 } catch (IOException ex) {
 Logger.getLogger(JavaFX_OpenFile.class.getName()).log(Level.SEVERE, null, ex);
 }
 } 
 
 return stringBuffer.toString();
 }
}


Related:
- Save file with JavaFX FileChooser
- Use JavaFX FileChooser to open image file, and display on ImageView


1 comment:

  1. Yes this compiles if you take out the Logger statements.

    Reply Delete

Subscribe to: Post Comments (Atom)

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