Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sample;
- import javafx.application.Application;
- import javafx.scene.Scene;
- import javafx.scene.control.*;
- import javafx.scene.layout.GridPane;
- import javafx.scene.layout.HBox;
- import javafx.scene.layout.Pane;
- import javafx.scene.layout.Priority;
- import javafx.stage.FileChooser;
- import javafx.stage.Stage;
- import javafx.stage.WindowEvent;
- import java.io.*;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.util.Optional;
- public class Main extends Application {
- Stage stage;
- Scene scene;
- Separator seperator;
- Pane rightSpacer = new Pane();
- MenuBar menuBar;
- Menu file;
- TextArea textArea;
- MenuItem open, save, close;
- Label words = new Label("Wörter: 0"), signs = new Label("Zeichen: 0");
- Button trimTextarea = new Button("Trimmen");
- FileChooser fileChooser;
- GridPane gridPane;
- ToolBar toolBar;
- @Override
- public void start(Stage primaryStage) throws Exception{
- stage = primaryStage;
- fileChooser = new FileChooser();
- fileChooser = new FileChooser();
- fileChooser.setTitle("Open Resource File");
- HBox.setHgrow(
- rightSpacer,
- Priority.SOMETIMES
- );
- seperator = new Separator();
- toolBar = new ToolBar(trimTextarea, rightSpacer, words, seperator, signs);
- trimTextarea.setOnAction(event -> trim());
- menuBar = new MenuBar();
- menuBar.setMinWidth(800);
- System.out.println(menuBar.getPrefHeight());
- file = new Menu("Datei");
- open = new MenuItem("Öffnen");
- save = new MenuItem("Speichern");
- close = new MenuItem("Schließen");
- open.setOnAction(event -> open());
- save.setOnAction(event -> save());
- close.setOnAction(event -> close());
- file.getItems().addAll(open, save, close);
- menuBar.getMenus().add(file);
- textArea = new TextArea();
- textArea.setMinHeight(500);
- textArea.setMinWidth(500);
- textArea.setOnKeyPressed(event -> count());
- gridPane = new GridPane();
- gridPane.getChildren().addAll(menuBar, textArea, toolBar);
- GridPane.setConstraints(toolBar, 0, 1);
- GridPane.setConstraints(menuBar, 0, 0);
- GridPane.setConstraints(textArea, 0,2);
- stage.setOnCloseRequest(event -> close(event));
- scene = new Scene(gridPane, 800, 600);
- stage.setScene(scene);
- stage.show();
- }
- void open(){
- File file = fileChooser.showOpenDialog(stage);
- try {
- Path path = Paths.get(file.getAbsolutePath());
- System.out.println(path.toString());
- BufferedReader br = Files.newBufferedReader(path);
- String lines;
- textArea.setText("");
- while ((lines = br.readLine()) != null){
- textArea.setText(textArea.getText() + "\n" + lines);
- }
- br.close();
- }catch (IOException e){
- System.out.println(e.getMessage());
- }
- }
- void save(){
- File file = fileChooser.showOpenDialog(stage);
- Path path = Paths.get(file.getAbsolutePath());
- System.out.println(path.toString());
- try (PrintWriter out = new PrintWriter(path.toString())) {
- out.print(textArea.getText());
- }catch (IOException e){
- System.out.println(e.getMessage());
- }
- }
- void close(WindowEvent event){
- Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
- alert.setTitle("Fenster schließen");
- alert.setContentText("Fortfahren?");
- Optional<ButtonType> result = alert.showAndWait();
- if(result.get() == ButtonType.OK){
- stage.close();
- }else{
- event.consume();
- }
- }
- void close(){
- Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
- alert.setTitle("Fenster schließen");
- alert.setContentText("Fortfahren?");
- Optional<ButtonType> result = alert.showAndWait();
- if(result.get() == ButtonType.OK){
- stage.close();
- }
- }
- void trim(){
- textArea.setText(textArea.getText().replaceAll("( )+", " "));
- }
- void count(){
- String s = textArea.getText();
- int wordCount = 0;
- boolean word = false;
- int endOfLine = s.length() - 1;
- for (int i = 0; i < s.length(); i++) {
- // if the char is a letter, word = true.
- if (Character.isLetter(s.charAt(i)) && i != endOfLine) {
- word = true;
- // if char isn't a letter and there have been letters before,
- // counter goes up.
- } else if (!Character.isLetter(s.charAt(i)) && word) {
- wordCount++;
- word = false;
- // last word of String; if it doesn't end with a non letter, it
- // wouldn't count without this.
- } else if (Character.isLetter(s.charAt(i)) && i == endOfLine) {
- wordCount++;
- }
- }
- words.setText("Wörter: " + wordCount);
- signs.setText("Zeichen: " + s.length());
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement