Advertisement
Guest User

Untitled

a guest
Dec 10th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. package com.bham.pij.assignments.edgedetector;
  2.  
  3. import java.io.File;
  4.  
  5. import javafx.application.Application;
  6. import javafx.event.ActionEvent;
  7. import javafx.event.EventHandler;
  8. import javafx.scene.Scene;
  9. import javafx.scene.control.Menu;
  10. import javafx.scene.control.MenuBar;
  11. import javafx.scene.control.MenuItem;
  12. import javafx.scene.image.Image;
  13. import javafx.scene.image.ImageView;
  14. import javafx.scene.layout.VBox;
  15. import javafx.stage.FileChooser;
  16. import javafx.stage.Stage;
  17.  
  18. public class UserInterface extends Application {
  19.  
  20. private VBox root = new VBox();
  21. private ImageView chosenImage = new ImageView();
  22. private Image toBeFiltered;
  23. ImageView toBeShown;
  24.  
  25. @Override
  26.  
  27. public void start(Stage stage) throws Exception {
  28.  
  29. stage.setTitle("Edge Detector");
  30.  
  31. Menu fileMenu = new Menu("File");
  32. MenuItem openItem = new MenuItem("Open");
  33. MenuItem closeItem = new MenuItem("Close");
  34.  
  35. Menu toolsMenu = new Menu("Tools");
  36. MenuItem edgeDetectionItem = new MenuItem("Edge Detection");
  37. MenuItem revertItem = new MenuItem("Revert");
  38.  
  39. closeItem.setDisable(true);
  40. edgeDetectionItem.setDisable(true);
  41. revertItem.setDisable(true);
  42.  
  43. openItem.setOnAction(new EventHandler<ActionEvent>() {
  44.  
  45. @Override
  46.  
  47. public void handle(ActionEvent t) {
  48.  
  49. FileChooser fileChooser = new FileChooser();
  50. fileChooser.setTitle("Open Image File");
  51. File file = fileChooser.showOpenDialog(stage);
  52.  
  53. if(file != null) {
  54.  
  55. loadImageFile(file);
  56.  
  57. closeItem.setDisable(false);
  58. openItem.setDisable(true);
  59. edgeDetectionItem.setDisable(false);
  60. }
  61. }
  62. });
  63.  
  64. closeItem.setOnAction(new EventHandler<ActionEvent>() {
  65.  
  66. @Override
  67.  
  68. public void handle(ActionEvent t) {
  69.  
  70. root.getChildren().remove(1);
  71.  
  72. closeItem.setDisable(true);
  73. openItem.setDisable(false);
  74. revertItem.setDisable(true);
  75. edgeDetectionItem.setDisable(true);
  76. }
  77. });
  78.  
  79.  
  80. edgeDetectionItem.setOnAction(new EventHandler<ActionEvent>() {
  81.  
  82. @Override
  83.  
  84. public void handle(ActionEvent t) {
  85.  
  86. EdgeDetector edge = new EdgeDetector();
  87. Image filteredImage = edge.filterImage(toBeFiltered);
  88. toBeShown = new ImageView(filteredImage);
  89.  
  90. root.getChildren().remove(chosenImage);
  91. root.getChildren().add(toBeShown);
  92.  
  93. edgeDetectionItem.setDisable(true);
  94. revertItem.setDisable(false);
  95. }
  96. });
  97.  
  98. revertItem.setOnAction(new EventHandler<ActionEvent>() {
  99.  
  100. @Override
  101.  
  102. public void handle(ActionEvent t) {
  103.  
  104. root.getChildren().remove(toBeShown);
  105. root.getChildren().add(chosenImage);
  106.  
  107. revertItem.setDisable(true);
  108. edgeDetectionItem.setDisable(false);
  109. }
  110. });
  111.  
  112.  
  113. toolsMenu.getItems().addAll(edgeDetectionItem, revertItem);
  114.  
  115. fileMenu.getItems().addAll(openItem, closeItem);
  116. MenuBar menuBar = new MenuBar();
  117. menuBar.getMenus().addAll(fileMenu, toolsMenu);
  118.  
  119. root.getChildren().addAll(menuBar);
  120. stage.setScene(new Scene(root, 500, 500));
  121. stage.show();
  122.  
  123. }
  124.  
  125. private void loadImageFile(File file) {
  126.  
  127. Image image = new Image("file:" + file.getPath());
  128. ImageView imgView = new ImageView(image);
  129.  
  130. root.getChildren().add(imgView);
  131.  
  132. chosenImage = imgView;
  133. toBeFiltered = image;
  134. }
  135.  
  136.  
  137. public static void main(String[] args) {
  138.  
  139. launch(args);
  140. }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement