Advertisement
Omar_Natour

Natour, O. 5/10/16 Csc-112 Phase 1 Final

May 10th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.72 KB | None | 0 0
  1. //*
  2.  * Omar Natour
  3.  * 5/10/16
  4.  * Csc-112 Java 2
  5.  * Final Exam Phase 1
  6.  * Create a gui for Zipcode matcher
  7.  * ojnatour0001@student.stcc.edu
  8.  */
  9.  
  10. import javafx.scene.Node;
  11. import javafx.scene.Scene;
  12. import javafx.scene.control.Button;
  13. import javafx.scene.control.TextArea;
  14. import javafx.scene.control.TextField;
  15. import javafx.scene.input.KeyEvent;
  16. import javafx.scene.layout.BorderPane;
  17. import javafx.scene.layout.HBox;
  18. import javafx.scene.layout.VBox;
  19. import javafx.scene.shape.Rectangle;
  20. import javafx.scene.text.Text;
  21. import javafx.stage.Stage;
  22. import javafx.application.Application;
  23. import javafx.event.ActionEvent;
  24. import javafx.event.EventHandler;
  25. import javafx.geometry.Pos;
  26.  
  27. public class ZipCodeGui extends Application {
  28.    
  29.     public static void main(String[] args){
  30.         launch(args);
  31.     }
  32.    
  33.         BorderPane Gui = new BorderPane();
  34.     public void start(Stage primaryStage){
  35.        
  36.         Gui.setTop(ZipToCity());
  37.         Gui.setCenter(CityToZip());
  38.         Gui.setBottom(Status());
  39.        
  40.         Scene sce = new Scene(Gui, 650, 300);
  41.        
  42.         primaryStage.setTitle("Zip Code");
  43.         primaryStage.setScene(sce);
  44.         primaryStage.show();
  45.         primaryStage.setResizable(false);
  46.     }
  47.    
  48.     TextField tfStatus = new TextField();
  49.    
  50.     private  Node ZipToCity() {
  51.        
  52.         VBox vbZTC = new VBox();
  53.        
  54.         HBox HBztcTop = new HBox(10);
  55.         HBztcTop.setPrefHeight(100);
  56.        
  57.         Text tZipCode = new Text("Zip Code:");
  58.         TextField tfZipCode = new TextField();
  59.         Button btZTC = new Button("Zip to City");
  60.         Text tCity = new Text("City:");
  61.         TextField tfCity = new TextField();
  62.         Text tState = new Text("State:");
  63.         TextField tfState = new TextField();
  64.        
  65.         tfZipCode.addEventFilter(KeyEvent.KEY_TYPED, maxLength(5));
  66.         tfZipCode.setPrefColumnCount(6);
  67.         tfState.setPrefColumnCount(2);
  68.  
  69.         tfCity.setEditable(false);
  70.         tfCity.setFocusTraversable(false);
  71.        
  72.         tfState.setEditable(false);
  73.         tfState.setFocusTraversable(false);
  74.        
  75.         EventHandler<ActionEvent> ZipToCity = e->{
  76.             if(tfZipCode.getText().matches("(\\d{5})")){
  77.                 tfStatus.setText("Good (Zip To City)");
  78.             }
  79.             else{
  80.                 tfStatus.setText("No Good (Zip To City)");
  81.             }
  82.         };
  83.    
  84.         btZTC.setOnAction(ZipToCity);
  85.        
  86.         Rectangle divider = new Rectangle();
  87.         divider.setWidth(595);
  88.         divider.setHeight(2);
  89.        
  90.         HBztcTop.setAlignment(Pos.CENTER); 
  91.         HBztcTop.getChildren().addAll(tZipCode, tfZipCode, btZTC, tCity, tfCity, tState, tfState);
  92.        
  93.         vbZTC.setAlignment(Pos.CENTER);
  94.         vbZTC.getChildren().addAll(HBztcTop, divider);
  95.         return vbZTC;
  96.     }
  97.    
  98.     private Node CityToZip() {
  99.         VBox vbCTZ = new VBox();
  100.        
  101.         HBox HBctzTop = new HBox(10);
  102.         HBctzTop.setPrefHeight(140);
  103.        
  104.         TextArea taZipCode = new TextArea("Zip Code(s)");
  105.         Button btCTZ = new Button("City to Zip");
  106.         Text tCity = new Text("City:");
  107.         TextField tfCity = new TextField();
  108.         Text tState = new Text("State:");
  109.         TextField tfState = new TextField();
  110.        
  111.         taZipCode.setPrefColumnCount(6);
  112.         taZipCode.setMaxHeight(120);
  113.         tfCity.setPrefColumnCount(25);
  114.         tfCity.addEventFilter(KeyEvent.KEY_TYPED, maxLength(25));
  115.         tfState.setPrefColumnCount(2);
  116.         tfState.addEventFilter(KeyEvent.KEY_TYPED, maxLength(2));
  117.        
  118.         taZipCode.setEditable(false);
  119.         taZipCode.setFocusTraversable(false);
  120.        
  121.         EventHandler<ActionEvent> CityToZip = e -> {
  122.            
  123.             String City = tfCity.getText().trim();
  124.             City = City.replaceAll("\\s{2,}"," ");
  125.            
  126.             if(City.matches("(^([a-zA-Z]+ ?)+$)") &&
  127.             tfState.getText().matches("^[a-zA-Z]{2}$")){
  128.                 tfStatus.setText("Good (City To Zip)");
  129.             }
  130.             else{
  131.                 tfStatus.setText("No Good (City To Zip)");
  132.             }
  133.         };
  134.        
  135.         btCTZ.setOnAction(CityToZip);
  136.        
  137.         Rectangle divider = new Rectangle();
  138.         divider.setWidth(595);
  139.         divider.setHeight(2);
  140.        
  141.         HBctzTop.getChildren().addAll( tCity, tfCity, tState, tfState, btCTZ, taZipCode);
  142.         HBctzTop.setAlignment(Pos.CENTER);
  143.        
  144.         vbCTZ.setAlignment(Pos.TOP_CENTER);
  145.         vbCTZ.getChildren().addAll(HBctzTop, divider);
  146.        
  147.         return vbCTZ;
  148.     }
  149.    
  150.     private Node Status() {
  151.         HBox hbStatus = new HBox(15);
  152.        
  153.         Text tStatus = new Text("Status:");
  154.        
  155.         tfStatus.setEditable(false);
  156.         tfStatus.setFocusTraversable(false);
  157.        
  158.         hbStatus.getChildren().addAll(tStatus, tfStatus);
  159.         hbStatus.setAlignment(Pos.CENTER);
  160.         hbStatus.setPrefHeight(80);
  161.        
  162.         return hbStatus;
  163.     }
  164.    
  165.     // Credit to "Magcus" on Stackoverflow.com (http://tinyurl.com/jqkb2ky) for this method of limiting characters in text field.
  166.     public EventHandler<KeyEvent> maxLength(final Integer i) {
  167.         return new EventHandler<KeyEvent>() {
  168.  
  169.             @Override
  170.             public void handle(KeyEvent arg0) {
  171.  
  172.                 TextField tx = (TextField) arg0.getSource();
  173.                 if (tx.getText().length() >= i) {
  174.                     arg0.consume();
  175.                 }
  176.             }
  177.         };
  178.     }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement