Advertisement
kijato

FxBorderPaneExample1.java ( Menu & "StatusBar" )

Jan 8th, 2020
462
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.25 KB | None | 0 0
  1. /*
  2. javac FxBorderPaneExample1.java && java FxBorderPaneExample1
  3. ||
  4. #!/bin/bash
  5. export JFX=javafx-sdk-11.0.2/lib/
  6. export MODS=javafx.controls,javafx.fxml,javafx.graphics,javafx.web
  7. javac --module-path $JFX --add-modules $MODS $1.java && java  --module-path $JFX --add-modules $MODS $1
  8. */
  9. import javafx.application.*;
  10. import javafx.event.*;
  11. import javafx.geometry.*;
  12. import javafx.scene.*;
  13. import javafx.scene.control.*;
  14. import javafx.scene.layout.*;
  15. import javafx.scene.canvas.*;
  16. import javafx.scene.text.*;
  17. import javafx.stage.*;
  18. import javafx.scene.input.*;
  19. import javafx.scene.shape.*;
  20. import javafx.collections.*;
  21. import javafx.scene.control.cell.*;
  22.  
  23. public class FxBorderPaneExample1 extends Application
  24. {
  25.     public static void main(String[] args) {
  26.       Application.launch(args);
  27.     }
  28.    
  29.     @Override
  30.     public void start(Stage stage) {
  31.        
  32.         stage.setTitle("Hello JavaFX + Menu,StatusBar,Events");
  33.  
  34.         Menu m1 = new Menu("File");
  35.         MenuItem mi1 = new MenuItem("Open");
  36.         MenuItem mi2 = new MenuItem("Save");
  37.         MenuItem mi3 = new MenuItem("Quit");
  38.         m1.getItems().add(mi1);
  39.         m1.getItems().add(mi2);
  40.         m1.getItems().add(new SeparatorMenuItem());
  41.         m1.getItems().add(mi3);
  42.         m1.setStyle(""
  43.             +"-fx-padding: 2 5 2 5;"
  44.         );
  45.  
  46.         Menu m2 = new Menu("Help");
  47.         MenuItem mi4 = new MenuItem("Doc");
  48.         MenuItem mi5 = new MenuItem("About");
  49.         m2.getItems().add(mi4);
  50.         m2.getItems().add(new SeparatorMenuItem());
  51.         m2.getItems().add(mi5);
  52.         m2.setStyle(""
  53.             +"-fx-padding: 2 5 2 5;"
  54.         );
  55.        
  56.         MenuBar menuBar = new MenuBar();
  57.         menuBar.getMenus().add(m1);
  58.         menuBar.getMenus().add(m2);
  59.        
  60.         menuBar.setStyle(""
  61.             //+"-fx-padding: 0;"
  62.             //+"-fx-margin: 5;"
  63.             //+"-fx-background-color: white;"
  64.             //+"-fx-height:;"
  65.             //  "-fx-my-menu-color: ghostwhite;"+
  66.             //  "-fx-my-menu-color-highlighted: lightgray;"+
  67.             //  "-fx-my-menu-font-color: #FFFFFF;"+
  68.             //  "-fx-my-menu-font-color-highlighted: red;"+
  69.             //  "-fx-border-style: solid inside;" +
  70.             //  "-fx-border-color: transparent;"//+
  71.             //  "-fx-focus-color: green;" +
  72.             //  +"-fx-font-size: 12px;"
  73.             //  +"-fx-font-family: Times;"
  74.             );
  75.        
  76.  
  77.         BorderPane statusBar = new BorderPane();
  78.         statusBar.setLeft(new Text("left"));
  79.         statusBar.setRight(new Text("right"));
  80.         statusBar.setStyle(""
  81.             +"-fx-padding: 2 5 2 5;"
  82.             +"-fx-margin: 5;"
  83.             +"-fx-border-style: solid inside;"
  84.             +"-fx-border-color: lightgray;"
  85.             +"-fx-background-color: linear-gradient(to bottom, ghostwhite, lightgray);"
  86.             //+"-fx-background-color: transparent;"
  87.         );
  88.        
  89.         statusBar.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
  90.             @Override
  91.             public void handle(MouseEvent e) {
  92.                 statusBar.setLeft(new Text("-"));
  93.             }
  94.         });
  95.      
  96.         mi1.setOnAction(e -> {
  97.             statusBar.setLeft(new Text("open..."));
  98.         });
  99.        
  100.         mi2.setOnAction(e -> {
  101.             statusBar.setLeft(new Text("save..."));
  102.             table();
  103.         });
  104.        
  105.         mi3.setOnAction(new EventHandler<ActionEvent>() {
  106.             @Override
  107.             public void handle(ActionEvent e) {
  108.                 Platform.exit();
  109.             }
  110.         });
  111.  
  112.         mi4.setOnAction(e -> {
  113.             statusBar.setLeft(new Text(menuBar.styleProperty().toString()));
  114.         });
  115.        
  116.         TextArea textArea = new TextArea();
  117.         ListView listView = new ListView();
  118.        
  119.     //Region left = new Region();
  120.     //Region right = new Region();
  121.     SplitPane.setResizableWithParent(listView, Boolean.FALSE);
  122.     SplitPane center = new SplitPane(listView, textArea);
  123.     center.setPrefSize(400, 400);
  124.      
  125.       BorderPane root = new BorderPane();
  126.         root.setPrefSize(600, 400);  
  127.        root.setTop(menuBar);
  128.         //root.setLeft(listView);
  129.         //root.setCenter(textArea);
  130.       root.setCenter(center);
  131.         root.setBottom(statusBar);
  132.  
  133.         root.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
  134.             @Override
  135.             public void handle(MouseEvent e) {
  136.                 statusBar.setLeft(new Text(root.getWidth()+" "+root.getHeight()));
  137.                 listView.getItems().add(e.getX()+" "+e.getY());
  138.             }
  139.         });
  140.        
  141.         textArea.addEventFilter(MouseEvent.MOUSE_MOVED, new EventHandler<MouseEvent>() {
  142.             @Override
  143.             public void handle(MouseEvent e) {
  144.                 textArea.appendText(e.getX()+" "+e.getY()+"\n");
  145.             }
  146.         });
  147.        
  148.       Scene scene = new Scene(root);
  149.       stage.setScene(scene);
  150.       stage.show();
  151.     }
  152.  
  153.     private void table() {
  154.        
  155.         Stage stage2 = new Stage();
  156.         stage2.setTitle("Table View Sample");
  157.         stage2.setWidth(300);
  158.         stage2.setHeight(500);
  159.        
  160.         TableView<Person> table = new TableView<Person>();
  161.         ObservableList<Person> data = FXCollections.observableArrayList(
  162.             new Person("Jacob", "Smith", "jacob.smith@example.com"),
  163.             new Person("Isabella", "Johnson", "isabella.johnson@example.com"),
  164.             new Person("Ethan", "Williams", "ethan.williams@example.com"),
  165.             new Person("Emma", "Jones", "emma.jones@example.com"),
  166.             new Person("Michael", "Brown", "michael.brown@example.com")
  167.         );
  168.        
  169.         TableColumn firstNameCol = new TableColumn("First Name");
  170.         TableColumn lastNameCol = new TableColumn("Last Name");
  171.         TableColumn emailCol = new TableColumn("Email");
  172.         firstNameCol.setCellValueFactory( new PropertyValueFactory<Person,String>("firstName") );
  173.         lastNameCol.setCellValueFactory( new PropertyValueFactory<Person,String>("lastName") );
  174.         emailCol.setCellValueFactory( new PropertyValueFactory<Person,String>("email") );
  175.         table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
  176.         table.setItems(data);
  177.         table.setEditable(true);
  178.  
  179.         BorderPane bp2 = new BorderPane();
  180.         bp2.setTop(new Label("Address Book"));
  181.         bp2.setCenter(table);
  182.         //bp2.setBottom((new StatusBar(new Text(".."))).get());
  183.         bp2.setBottom(new Label("..."));
  184.  
  185.         Scene scene = new Scene(bp2);
  186.         stage2.setScene(scene);
  187.         stage2.show();
  188.  
  189.     }    
  190.    
  191.     public class StatusBar extends BorderPane {
  192.        
  193.         BorderPane sbbp = new BorderPane();
  194.        
  195.         private Text left = new Text();
  196.         private Text middle = new Text();
  197.         private Text right = new Text();
  198.        
  199.         private StatusBar(Text l) {
  200.             this.left = l;
  201.             sbbp.setLeft(l);
  202.         }
  203.        
  204.         private StatusBar(Text l, Text r) {
  205.             this.left = l;
  206.             this.right = r;
  207.         }
  208.        
  209.         private StatusBar(Text l, Text m, Text r) {
  210.             this.left = l;
  211.             this.middle = m;
  212.             this.right = r;
  213.         }
  214.    
  215.         public BorderPane get() {
  216.             return sbbp;
  217.         }
  218.        
  219.     }
  220.    
  221.     public static class Person {
  222.  
  223.         private String firstName;
  224.         private String lastName;
  225.         private String email;
  226.  
  227.         private Person(String fName, String lName, String email) {
  228.             this.firstName = new String(fName);
  229.             this.lastName = new String(lName);
  230.             this.email = new String(email);
  231.         }
  232.  
  233.         public String getFirstName() {
  234.             return firstName;
  235.         }
  236.  
  237.         public void setFirstName(String fName) {
  238.             firstName=fName;
  239.         }
  240.  
  241.         public String getLastName() {
  242.             return lastName;
  243.         }
  244.  
  245.         public void setLastName(String fName) {
  246.             lastName=fName;
  247.         }
  248.  
  249.         public String getEmail() {
  250.             return email;
  251.         }
  252.  
  253.         public void setEmail(String fName) {
  254.             email=fName;
  255.         }
  256.     }    
  257.  
  258. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement