1. 程式人生 > >文字框開啟和儲存

文字框開啟和儲存

/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package chcnddocumenteditor;

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; import javafx.stage.Stage;

/** * * @author */ public class ChcndDocumentEditor extends Application {

public String title = "Document Editor";
public int width = 800; 
public int height = 700; 

@Override
public void start(Stage primaryStage) {

    primaryStage.setTitle(title);

    VBox root = new VBox(20); 

    GridPane grid = new GridPane(); 
    grid.setAlignment(Pos.CENTER);
    grid.setVgap(20);

    Label titleLabel = new Label("Title:");
    TextField titleField = new TextField(); 
    titleField.setPrefColumnCount(45);
    HBox titleFieldBox = new HBox(10); 
    titleFieldBox.setAlignment(Pos.CENTER_LEFT);
    titleFieldBox.getChildren().addAll(titleLabel, titleField); 
    grid.add(titleFieldBox, 0, 0);

    TextArea editor = new TextArea(); 
    editor.setPrefColumnCount(45); 
    editor.setPrefRowCount(25); 
    grid.add(editor, 0, 1);    

    MenuBar menuBar = new MenuBar(); 
    Menu fileMenu = new Menu("File"); 
    menuBar.getMenus().add(fileMenu); 

    MenuItem openMenuItem = new MenuItem("Open"); 
    fileMenu.getItems().add(openMenuItem);
    MenuItem saveMenuItem = new MenuItem("Save"); 
    fileMenu.getItems().add(saveMenuItem); 

    FileChooser fileChooser = new FileChooser();

    openMenuItem.setOnAction((ActionEvent e) -> {
        configureFileChooser(fileChooser);
        File file = fileChooser.showOpenDialog(primaryStage);
        if (file != null) {
            String fName =file.toString(); 
            File tempFile =new File( fName.trim());  
            String fileName = tempFile.getName();  
            titleField.setText(fileName);
            String text = txt2String(file);
            editor.setText(text);
            }else {
            titleField.setText("No file input");
        }
    });

    saveMenuItem.setOnAction((ActionEvent e) -> {
        File file = fileChooser.showSaveDialog(primaryStage);
        FileWriter writer;
        String str = editor.getText();
        try {
            writer = new FileWriter(file.toString());
            writer.write(str);
            writer.flush();
            writer.close();
        } catch(IOException f) {
            f.printStackTrace();
        }   
    });

    root.getChildren().addAll(menuBar, grid);
    Scene scene = new Scene(root, width, height);
    primaryStage.setScene(scene);
    primaryStage.show();
}

private static void configureFileChooser(FileChooser fileChooser) {                     
    fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("TXT", "*.txt"));
}

private static String txt2String(File file){
    StringBuilder result = new StringBuilder();
    try
    {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String s = null;
        while((s = br.readLine())!=null)
        {
            result.append(System.lineSeparator()+s);
        }
        br.close();    
    }catch(Exception e)
        {
        e.printStackTrace();
        }
    return result.toString();    
    }

// private static File string2txt(String string) { // File file = new File(string); // return file; // }

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
} 

}