16.10 ( Text viewer ) Write a program that displays a text file in a text area, as shown in Figure 16.40a. The user enters a file name in a text field and clicks the View
button; the file is then displayed in a text area.
button; the file is then displayed in a text area.
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; import java.io.File; import java.io.IOException; import java.util.Scanner; public class Exercise_10 extends Application { @Override public void start(Stage primaryStage) throws Exception { TextEditor textEditor = new TextEditor(); primaryStage.setScene(new Scene(textEditor)); primaryStage.show(); } private class TextEditor extends VBox { TextArea ta; TextField tfPath; private TextEditor() { ta = new TextArea(); ta.setPrefSize(350, 150); // Bottom pane: contains tf and bt to retrieve file path and open file tfPath = new TextField(); tfPath.setOnAction(e-> readFile()); Label lblPath = new Label("Filename", tfPath); lblPath.setContentDisplay(ContentDisplay.RIGHT); Button btView = new Button("View"); btView.setOnAction(e->{ readFile(); }); tfPath.setPrefColumnCount(ta.getPrefColumnCount() - 9); HBox filePath = new HBox(lblPath, btView); getChildren().addAll(ta, filePath); autosize(); } private void readFile() { File file = new File(tfPath.getText()); if (!file.exists()) { ta.setText("FILE NOT FOUND"); return; } Scanner scanner; StringBuilder sb = new StringBuilder(); try { scanner = new Scanner(file); while (scanner.hasNextLine()) { sb.append(scanner.nextLine() + "\n"); } ta.setText(sb.toString()); } catch (IOException ex) { ta.setText("Error opening file..."); } } } public static void main(String[] args) { Application.launch(args); } }
No comments:
Post a Comment