Monday, May 14, 2012

Read text file with JavaFX FileChooser

Example to choose and read text file with JavaFX FileChooser.

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


No comments:

Post a Comment