文字框開啟和儲存
/* * 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);
}
}