Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. package sample;
  2.  
  3. import javafx.application.Application;
  4.  
  5. import javafx.scene.Scene;
  6. import javafx.scene.control.*;
  7. import javafx.scene.layout.GridPane;
  8. import javafx.scene.layout.HBox;
  9. import javafx.scene.layout.Pane;
  10. import javafx.scene.layout.Priority;
  11. import javafx.stage.FileChooser;
  12. import javafx.stage.Stage;
  13. import javafx.stage.WindowEvent;
  14.  
  15. import java.io.*;
  16. import java.nio.file.Files;
  17. import java.nio.file.Path;
  18. import java.nio.file.Paths;
  19. import java.util.Optional;
  20.  
  21. public class Main extends Application {
  22. Stage stage;
  23. Scene scene;
  24.  
  25. Separator seperator;
  26. Pane rightSpacer = new Pane();
  27.  
  28.  
  29. MenuBar menuBar;
  30. Menu file;
  31. TextArea textArea;
  32. MenuItem open, save, close;
  33.  
  34. Label words = new Label("Wörter: 0"), signs = new Label("Zeichen: 0");
  35. Button trimTextarea = new Button("Trimmen");
  36.  
  37. FileChooser fileChooser;
  38.  
  39. GridPane gridPane;
  40.  
  41. ToolBar toolBar;
  42. @Override
  43. public void start(Stage primaryStage) throws Exception{
  44. stage = primaryStage;
  45.  
  46. fileChooser = new FileChooser();
  47.  
  48. fileChooser = new FileChooser();
  49. fileChooser.setTitle("Open Resource File");
  50.  
  51. HBox.setHgrow(
  52. rightSpacer,
  53. Priority.SOMETIMES
  54. );
  55. seperator = new Separator();
  56. toolBar = new ToolBar(trimTextarea, rightSpacer, words, seperator, signs);
  57.  
  58. trimTextarea.setOnAction(event -> trim());
  59.  
  60. menuBar = new MenuBar();
  61. menuBar.setMinWidth(800);
  62. System.out.println(menuBar.getPrefHeight());
  63. file = new Menu("Datei");
  64. open = new MenuItem("Öffnen");
  65. save = new MenuItem("Speichern");
  66. close = new MenuItem("Schließen");
  67.  
  68. open.setOnAction(event -> open());
  69. save.setOnAction(event -> save());
  70. close.setOnAction(event -> close());
  71. file.getItems().addAll(open, save, close);
  72. menuBar.getMenus().add(file);
  73.  
  74. textArea = new TextArea();
  75. textArea.setMinHeight(500);
  76. textArea.setMinWidth(500);
  77. textArea.setOnKeyPressed(event -> count());
  78.  
  79. gridPane = new GridPane();
  80. gridPane.getChildren().addAll(menuBar, textArea, toolBar);
  81. GridPane.setConstraints(toolBar, 0, 1);
  82. GridPane.setConstraints(menuBar, 0, 0);
  83. GridPane.setConstraints(textArea, 0,2);
  84. stage.setOnCloseRequest(event -> close(event));
  85.  
  86. scene = new Scene(gridPane, 800, 600);
  87. stage.setScene(scene);
  88. stage.show();
  89.  
  90. }
  91.  
  92. void open(){
  93. File file = fileChooser.showOpenDialog(stage);
  94. try {
  95. Path path = Paths.get(file.getAbsolutePath());
  96. System.out.println(path.toString());
  97. BufferedReader br = Files.newBufferedReader(path);
  98. String lines;
  99. textArea.setText("");
  100. while ((lines = br.readLine()) != null){
  101. textArea.setText(textArea.getText() + "\n" + lines);
  102. }
  103. br.close();
  104. }catch (IOException e){
  105. System.out.println(e.getMessage());
  106. }
  107. }
  108.  
  109. void save(){
  110. File file = fileChooser.showOpenDialog(stage);
  111. Path path = Paths.get(file.getAbsolutePath());
  112. System.out.println(path.toString());
  113.  
  114. try (PrintWriter out = new PrintWriter(path.toString())) {
  115. out.print(textArea.getText());
  116. }catch (IOException e){
  117. System.out.println(e.getMessage());
  118. }
  119. }
  120.  
  121. void close(WindowEvent event){
  122. Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
  123. alert.setTitle("Fenster schließen");
  124. alert.setContentText("Fortfahren?");
  125.  
  126. Optional<ButtonType> result = alert.showAndWait();
  127. if(result.get() == ButtonType.OK){
  128. stage.close();
  129. }else{
  130. event.consume();
  131. }
  132. }
  133.  
  134. void close(){
  135. Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
  136. alert.setTitle("Fenster schließen");
  137. alert.setContentText("Fortfahren?");
  138.  
  139. Optional<ButtonType> result = alert.showAndWait();
  140. if(result.get() == ButtonType.OK){
  141. stage.close();
  142. }
  143. }
  144.  
  145. void trim(){
  146. textArea.setText(textArea.getText().replaceAll("( )+", " "));
  147. }
  148.  
  149. void count(){
  150. String s = textArea.getText();
  151.  
  152.  
  153. int wordCount = 0;
  154.  
  155. boolean word = false;
  156. int endOfLine = s.length() - 1;
  157.  
  158. for (int i = 0; i < s.length(); i++) {
  159. // if the char is a letter, word = true.
  160. if (Character.isLetter(s.charAt(i)) && i != endOfLine) {
  161. word = true;
  162. // if char isn't a letter and there have been letters before,
  163. // counter goes up.
  164. } else if (!Character.isLetter(s.charAt(i)) && word) {
  165. wordCount++;
  166. word = false;
  167. // last word of String; if it doesn't end with a non letter, it
  168. // wouldn't count without this.
  169. } else if (Character.isLetter(s.charAt(i)) && i == endOfLine) {
  170. wordCount++;
  171. }
  172. }
  173.  
  174. words.setText("Wörter: " + wordCount);
  175. signs.setText("Zeichen: " + s.length());
  176. }
  177.  
  178. public static void main(String[] args) {
  179. launch(args);
  180. }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement