770 likes | 1.04k Views
Dubna 2012. Benedicto Fernandez benedicto.fernandez@cern.ch Software Engineer CERN / GS-AIS. Contents. What is JavaFX? History What ’ s new in JavaFX 2.X? Architecture What ’ s coming next? Examples Deployment. What is JavaFX? (I). What is JavaFX? (II).
E N D
Dubna 2012 Benedicto Fernandez benedicto.fernandez@cern.ch Software Engineer CERN / GS-AIS
Contents • What is JavaFX? • History • What’s new in JavaFX 2.X? • Architecture • What’s coming next? • Examples • Deployment
What is JavaFX? (II) Rich sets of graphics and media API Cross-Platform Deploy on the Desktop or in the browser
History • JavaOne • Announce JavaFX • JavaOne • End of JavaFX Script 2011 2007 2008 2009 2010 2012 JavaFX 1.0 • JavaOne • JavaFX 2.0
JavaFX Roadmap • JavaFX 2.0 • Windows GA • Mac OS X Dev. Preview • JavaFX 2.1 • Mac OS X GA • Linux Dev. Preview • JavaFX 3.0 • Included in JDK 8 • Concurrent OS support (Windows, Mac OS, Linux) 2011 2012 2013 2014 • JavaFX 2.2 • Linux GA • JavaFX 2.0.2 • JDK 7 co-install JavaFX Scene Builder GA JavaFX 2.0 Scene Builder EA • NetBeans 7.1 • JavaFX 2.0 Support • NetBeans • JavaFX 3.0 Support
What’s new in JavaFX 2.0? • New graphics and media engine • FXML • Web component • Wide variety of built-in UI controls • Refreshed browser plug-In
Architecture JavaFX Public API’s and Scene Graph Quantum Toolkit Prism Glass Windowing Toolkit Media Engine Web Engine Java 2D Open GL D3D Java Virtual Machine
Architecture JavaFX Public API’s and Scene Graph Quantum Toolkit Prism Glass Windowing Toolkit Media Engine Web Engine Java 2D Open GL D3D Java Virtual Machine
Architecture JavaFX Public API’s and Scene Graph Quantum Toolkit Prism Glass Windowing Toolkit Media Engine Web Engine Java 2D Open GL D3D Java Virtual Machine
Architecture JavaFX Public API’s and Scene Graph Quantum Toolkit Prism Glass Windowing Toolkit Media Engine Web Engine Java 2D Open GL D3D Java Virtual Machine
Architecture JavaFX Public API’s and Scene Graph Quantum Toolkit Prism Glass Windowing Toolkit Media Engine Web Engine Java 2D Open GL D3D Java Virtual Machine
Architecture JavaFX Public API’s and Scene Graph Quantum Toolkit Prism Glass Windowing Toolkit Media Engine Web Engine Java 2D Open GL D3D Java Virtual Machine
What’s coming next? • Tighter Integration with Java SE (JSE 8) • Improvements to UI Controls and Charts • Data Services Support • Modularization • Accessibility Support • Multi-Touch and Gestures Support • Sensor Support
Example – Hello World public class JavaFXApplication1 extends Application { /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { // Set window's title primaryStage.setTitle("Hello World!"); // Create a button Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); StackPane root = new StackPane(); root.getChildren().add(btn); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
Example – Hello World public class JavaFXApplication1 extends Application { /** * @paramargs the command line arguments */ public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { // Set window's title primaryStage.setTitle("Hello World!"); // Create a button Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); StackPane root = new StackPane(); root.getChildren().add(btn); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
Example – Hello World public class JavaFXApplication1 extends Application { /** * @paramargs the command line arguments */ public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { // Set window's title primaryStage.setTitle("Hello World!"); // Create a button Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); StackPane root = new StackPane(); root.getChildren().add(btn); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
Example – Hello World public class JavaFXApplication1 extends Application { /** * @paramargs the command line arguments */ public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { // Set window's title primaryStage.setTitle("Hello World!"); // Create a button Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); StackPane root = new StackPane(); root.getChildren().add(btn); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
Example – Hello World public class JavaFXApplication1 extends Application { /** * @paramargs the command line arguments */ public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { // Set window's title primaryStage.setTitle("Hello World!"); // Create a button Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(newEventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); StackPane root = newStackPane(); root.getChildren().add(btn); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
Example – Hello World public class JavaFXApplication1 extends Application { /** * @paramargs the command line arguments */ public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { // Set window's title primaryStage.setTitle("Hello World!"); // Create a button Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); StackPane root = new StackPane(); root.getChildren().add(btn); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
Examples – Forms v1.0 public void start(Stage primaryStage) { // Set Window's Title primaryStage.setTitle("JavaFX Welcome!"); GridPane grid = new GridPane(); grid.setAlignment(Pos.CENTER); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(25, 25, 25, 25)); Text scenetitle = new Text("Welcome"); scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20)); grid.add(scenetitle, 0, 0, 2, 1); Label userName = new Label( "User Name:“ ); grid.add(userName, 0, 1); TextField userTextField = new TextField(); grid.add(userTextField, 1, 1); Label pw = new Label("Password:"); grid.add(pw, 0, 2); PasswordField pwBox = new PasswordField(); grid.add(pwBox, 1, 2); Button btn = new Button( "Sign in“ ); HBox hbBtn = new HBox(10); hbBtn.setAlignment(Pos.BOTTOM_RIGHT); hbBtn.getChildren().add(btn); grid.add(hbBtn, 1, 4); final Text actiontarget = new Text(); grid.add(actiontarget, 1, 6); btn.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { actiontarget.setFill(Color.FIREBRICK); actiontarget.setId( "actiontarget“ ); actiontarget.setText( "Sign in button pressed“ ); } }); Scene scene = new Scene(grid, 300, 275); primaryStage.setScene(scene); primaryStage.show(); }
Examples – Forms v1.0 public void start(Stage primaryStage) { // Set Window's Title primaryStage.setTitle("JavaFX Welcome!"); GridPane grid = new GridPane(); grid.setAlignment(Pos.CENTER); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(25, 25, 25, 25)); Text scenetitle = new Text("Welcome"); scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20)); grid.add(scenetitle, 0, 0, 2, 1); Label userName = new Label( "User Name:“ ); grid.add(userName, 0, 1); TextField userTextField = new TextField(); grid.add(userTextField, 1, 1); Label pw = new Label("Password:"); grid.add(pw, 0, 2); PasswordField pwBox = new PasswordField(); grid.add(pwBox, 1, 2); Button btn = new Button( "Sign in“ ); HBox hbBtn = new HBox(10); hbBtn.setAlignment(Pos.BOTTOM_RIGHT); hbBtn.getChildren().add(btn); grid.add(hbBtn, 1, 4); final Text actiontarget = new Text(); grid.add(actiontarget, 1, 6); btn.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { actiontarget.setFill(Color.FIREBRICK); actiontarget.setId( "actiontarget“ ); actiontarget.setText( "Sign in button pressed“ ); } }); Scene scene = new Scene(grid, 300, 275); primaryStage.setScene(scene); primaryStage.show(); }
Examples – Forms v1.0 public void start(Stage primaryStage) { // Set Window's Title primaryStage.setTitle("JavaFX Welcome!"); GridPane grid = new GridPane(); grid.setAlignment(Pos.CENTER); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(25, 25, 25, 25)); Text scenetitle = new Text("Welcome"); scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20)); grid.add(scenetitle, 0, 0, 2, 1); Label userName = new Label( "User Name:“ ); grid.add(userName, 0, 1); TextField userTextField = new TextField(); grid.add(userTextField, 1, 1); Label pw = new Label("Password:"); grid.add(pw, 0, 2); PasswordField pwBox = new PasswordField(); grid.add(pwBox, 1, 2); Button btn = new Button( "Sign in“ ); HBox hbBtn = new HBox(10); hbBtn.setAlignment(Pos.BOTTOM_RIGHT); hbBtn.getChildren().add(btn); grid.add(hbBtn, 1, 4); final Text actiontarget = new Text(); grid.add(actiontarget, 1, 6); btn.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { actiontarget.setFill(Color.FIREBRICK); actiontarget.setId( "actiontarget“ ); actiontarget.setText( "Sign in button pressed“ ); } }); Scene scene = new Scene(grid, 300, 275); primaryStage.setScene(scene); primaryStage.show(); }
Examples – Forms v1.0 public void start(Stage primaryStage) { // Set Window's Title primaryStage.setTitle("JavaFX Welcome!"); GridPane grid = new GridPane(); grid.setAlignment(Pos.CENTER); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(25, 25, 25, 25)); Text scenetitle = new Text("Welcome"); scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20)); grid.add(scenetitle, 0, 0, 2, 1); Label userName = new Label( "User Name:“ ); grid.add(userName, 0, 1); TextField userTextField = new TextField(); grid.add(userTextField, 1, 1); Label pw = new Label("Password:"); grid.add(pw, 0, 2); PasswordField pwBox = new PasswordField(); grid.add(pwBox, 1, 2); Button btn = new Button( "Sign in“ ); HBox hbBtn = new HBox(10); hbBtn.setAlignment(Pos.BOTTOM_RIGHT); hbBtn.getChildren().add(btn); grid.add(hbBtn, 1, 4); final Text actiontarget = new Text(); grid.add(actiontarget, 1, 6); btn.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { actiontarget.setFill(Color.FIREBRICK); actiontarget.setId( "actiontarget“ ); actiontarget.setText( "Sign in button pressed“ ); } }); Scene scene = new Scene(grid, 300, 275); primaryStage.setScene(scene); primaryStage.show(); }
Examples – Forms v1.0 public void start(Stage primaryStage) { // Set Window's Title primaryStage.setTitle("JavaFX Welcome!"); GridPane grid = new GridPane(); grid.setAlignment(Pos.CENTER); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(25, 25, 25, 25)); Text scenetitle = new Text("Welcome"); scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20)); grid.add(scenetitle, 0, 0, 2, 1); Label userName = new Label( "User Name:“ ); grid.add(userName, 0, 1); TextField userTextField = new TextField(); grid.add(userTextField, 1, 1); Label pw = new Label("Password:"); grid.add(pw, 0, 2); PasswordField pwBox = new PasswordField(); grid.add(pwBox, 1, 2); Button btn = new Button( "Sign in“ ); HBox hbBtn = new HBox(10); hbBtn.setAlignment(Pos.BOTTOM_RIGHT); hbBtn.getChildren().add(btn); grid.add(hbBtn, 1, 4); final Text actiontarget = new Text(); grid.add(actiontarget, 1, 6); btn.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { actiontarget.setFill(Color.FIREBRICK); actiontarget.setId( "actiontarget“ ); actiontarget.setText( "Sign in button pressed“ ); } }); Scene scene = new Scene(grid, 300, 275); primaryStage.setScene(scene); primaryStage.show(); }
Examples – Forms v1.0 public void start(Stage primaryStage) { // Set Window's Title primaryStage.setTitle("JavaFX Welcome!"); GridPane grid = new GridPane(); grid.setAlignment(Pos.CENTER); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(25, 25, 25, 25)); Text scenetitle = new Text("Welcome"); scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20)); grid.add(scenetitle, 0, 0, 2, 1); Label userName = new Label( "User Name:“ ); grid.add(userName, 0, 1); TextField userTextField = new TextField(); grid.add(userTextField, 1, 1); Label pw = new Label("Password:"); grid.add(pw, 0, 2); PasswordField pwBox = new PasswordField(); grid.add(pwBox, 1, 2); Button btn = new Button( "Sign in“ ); HBox hbBtn = new HBox(10); hbBtn.setAlignment(Pos.BOTTOM_RIGHT); hbBtn.getChildren().add(btn); grid.add(hbBtn, 1, 4); final Text actiontarget = new Text(); grid.add(actiontarget, 1, 6); btn.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent e) { actiontarget.setFill(Color.FIREBRICK); actiontarget.setId( "actiontarget“ ); actiontarget.setText( "Sign in button pressed“ ); } }); Scene scene = new Scene(grid, 300, 275); primaryStage.setScene(scene); primaryStage.show(); }
Examples – Forms v2.0b • public void start(Stage primaryStage) { • // Set Window's Title • primaryStage.setTitle( "JavaFX Welcome!“ ); • GridPane grid = new GridPane(); • grid.setAlignment(Pos.CENTER); • grid.setHgap(10); • grid.setVgap(10); • grid.setPadding( new Insets(25, 25, 25, 25)); • Text scenetitle = new Text( "Welcome“ ); • scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20)); • grid.add(scenetitle, 0, 0, 2, 1); • Label userName = new Label( "User Name:“ ); • grid.add(userName, 0, 1); • TextField userTextField = new TextField(); • grid.add(userTextField, 1, 1); • Label pw = new Label("Password:"); • grid.add(pw, 0, 2); • PasswordField pwBox = new PasswordField(); • grid.add(pwBox, 1, 2); • Button btn = new Button( "Sign in“ ); • HBox hbBtn = new HBox(10); • hbBtn.setAlignment(Pos.BOTTOM_RIGHT); • hbBtn.getChildren().add(btn); • grid.add(hbBtn, 1, 4); • final Text actiontarget = new Text(); • grid.add(actiontarget, 1, 6); • btn.setOnAction( new EventHandler<ActionEvent>() { • @Override • public void handle(ActionEvent e) { • actiontarget.setFill(Color.FIREBRICK); • actiontarget.setId( "actiontarget“ ); • actiontarget.setText( "Sign in button pressed“ ); • } • }); • Scene scene = new Scene(grid, 300, 275); • primaryStage.setScene(scene); • scene.getStylesheets().add(Login.class.getResource("Login.css").toExternalForm()); • primaryStage.show(); • }
Examples – Forms v2.0b • public void start(Stage primaryStage) { • // Set Window's Title • primaryStage.setTitle( "JavaFX Welcome!“ ); • GridPane grid = new GridPane(); • grid.setAlignment(Pos.CENTER); • grid.setHgap(10); • grid.setVgap(10); • grid.setPadding( new Insets(25, 25, 25, 25)); • Text scenetitle = new Text( "Welcome“ ); • scenetitle.setId( "welcome-text“ ); • grid.add(scenetitle, 0, 0, 2, 1); • Label userName = new Label( "User Name:“ ); • grid.add(userName, 0, 1); • TextField userTextField = new TextField(); • grid.add(userTextField, 1, 1); • Label pw = new Label("Password:"); • grid.add(pw, 0, 2); • PasswordField pwBox = new PasswordField(); • grid.add(pwBox, 1, 2); • Button btn = new Button( "Sign in“ ); • HBox hbBtn = new HBox(10); • hbBtn.setAlignment(Pos.BOTTOM_RIGHT); • hbBtn.getChildren().add(btn); • grid.add(hbBtn, 1, 4); • final Text actiontarget = new Text(); • actiontarget.setId( "welcome-text“ ); • grid.add(actiontarget, 1, 6); • btn.setOnAction( new EventHandler<ActionEvent>() { • @Override • public void handle(ActionEvent e) { • actiontarget.setId( "actiontarget“ ); • actiontarget.setText( "Sign in button pressed“ ); • } • }); • Scene scene = new Scene(grid, 300, 275); • primaryStage.setScene(scene); • scene.getStylesheets().add( • Login.class.getResource( "Login.css“ ).toExternalForm()); • primaryStage.show(); • }
Examples – Forms v2.0 .root { -fx-background-image: url("background.jpg"); } .label { -fx-font-size: 12px; -fx-font-weight: bold; -fx-text-fill: #333333; -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); } #welcome-text { -fx-font-size: 32px; -fx-font-family: "Arial Black"; -fx-fill: #818181; -fx-effect: innershadow( three-pass-box , rgba(0,0,0,0.7) , 6, 0.0 , 0 , 2 ); } #actiontarget { -fx-fill: FIREBRICK; -fx-font-weight: bold; -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); } .button { -fx-text-fill: white; -fx-font-family: "Arial Narrow"; -fx-font-weight: bold; -fx-background-color: linear-gradient(#61a2b1, #2A5058); -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1 ); } .button:hover { -fx-background-color: linear-gradient(#2A5058, #61a2b1); }
FXML (I) • Scriptable, XML-based markup language for defining user interfaces • Alternative to developing UI programmatically • Easy and intuitive for web developers • Allows embedding any JVM scripting language • JavaScript • Groovy • Clojure • …
FXML (II) FXApplication.java public class FXApplication extends Application { … } <FXML /> Controller.java public class Controller { … }
Examples – Forms v3.0 (I) <?xml version="1.0" encoding="UTF-8"?> <?import javafx.geometry.*?> … <GridPane fx:controller="loginfxml.Sample" stylesheets="loginfxml/Login.css" xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10"> <padding> <Insets top="25" right="25" bottom="10" left="25"/> </padding> <Text id="welcome-text" text="Welcome" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"/> <Label text="User Name:" GridPane.columnIndex="0" GridPane.rowIndex="1"/> <TextField fx:id="usernameField" GridPane.columnIndex="1" GridPane.rowIndex="1"/> <Label text="Password:" GridPane.columnIndex="0" GridPane.rowIndex="2"/> <PasswordField fx:id="passwordField" GridPane.columnIndex="1" GridPane.rowIndex="2"/> <HBox spacing="10" alignment="bottom_right" GridPane.columnIndex="1“ GridPane.rowIndex="4"> <Button text="Sign In" onAction="#handleSubmitButtonAction"/> </HBox> <Text fx:id="actiontarget" GridPane.columnIndex="1" GridPane.rowIndex="6"/> </GridPane>
Examples – Forms v3.0 (III) <?xml version="1.0" encoding="UTF-8"?> <?import javafx.geometry.*?> … <GridPane fx:controller="loginfxml.Sample“ stylesheets="loginfxml/Login.css" xmlns:fx=http://javafx.com/fxml alignment="center" hgap="10" vgap="10"> <padding> <Insets top="25" right="25" bottom="10" left="25"/> </padding> <Text id="welcome-text" text="Welcome" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"/> <Label text="User Name:" GridPane.columnIndex="0" GridPane.rowIndex="1"/> <TextField fx:id="usernameField" GridPane.columnIndex="1" GridPane.rowIndex="1"/> <Label text="Password:" GridPane.columnIndex="0" GridPane.rowIndex="2"/> <PasswordField fx:id="passwordField" GridPane.columnIndex="1" GridPane.rowIndex="2"/> <HBox spacing="10" alignment="bottom_right" GridPane.columnIndex="1“ GridPane.rowIndex="4"> <Button text="Sign In" onAction="#handleSubmitButtonAction"/> </HBox> <Text fx:id="actiontarget" GridPane.columnIndex="1" GridPane.rowIndex="6"/> </GridPane>
Examples – Forms v3.0 (III) <?xml version="1.0" encoding="UTF-8"?> <?import javafx.geometry.*?> … <GridPane fx:controller="loginfxml.Sample“ stylesheets="loginfxml/Login.css" xmlns:fx=http://javafx.com/fxml alignment="center" hgap="10" vgap="10"> <padding> <Insets top="25" right="25" bottom="10" left="25"/> </padding> <Text id="welcome-text" text="Welcome" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"/> <Label text="User Name:" GridPane.columnIndex="0" GridPane.rowIndex="1"/> <TextField fx:id="usernameField" GridPane.columnIndex="1" GridPane.rowIndex="1"/> <Label text="Password:" GridPane.columnIndex="0" GridPane.rowIndex="2"/> <PasswordField fx:id="passwordField" GridPane.columnIndex="1" GridPane.rowIndex="2"/> <HBox spacing="10" alignment="bottom_right" GridPane.columnIndex="1“ GridPane.rowIndex="4"> <Button text="Sign In" onAction="#handleSubmitButtonAction"/> </HBox> <Text fx:id="actiontarget" GridPane.columnIndex="1" GridPane.rowIndex="6"/> </GridPane>
Examples – Forms v3.0 (III) <?xml version="1.0" encoding="UTF-8"?> <?import javafx.geometry.*?> … <GridPane fx:controller="loginfxml.Sample" stylesheets="loginfxml/Login.css" xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10"> <padding> <Insets top="25" right="25" bottom="10" left="25"/> </padding> <Text id="welcome-text" text="Welcome" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"/> <Label text="User Name:" GridPane.columnIndex="0" GridPane.rowIndex="1"/> <TextField fx:id="usernameField" GridPane.columnIndex="1" GridPane.rowIndex="1"/> <Label text="Password:" GridPane.columnIndex="0" GridPane.rowIndex="2"/> <PasswordField fx:id="passwordField" GridPane.columnIndex="1" GridPane.rowIndex="2"/> <HBox spacing="10" alignment="bottom_right" GridPane.columnIndex="1“ GridPane.rowIndex="4"> <Button text="Sign In" onAction="#handleSubmitButtonAction"/> </HBox> <Text fx:id="actiontarget" GridPane.columnIndex="1" GridPane.rowIndex="6"/> </GridPane>
Examples – Forms v3.0 (III) <?xml version="1.0" encoding="UTF-8"?> <?import javafx.geometry.*?> … <GridPane fx:controller="loginfxml.Sample" stylesheets="loginfxml/Login.css" xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10"> <padding> <Insets top="25" right="25" bottom="10" left="25"/> </padding> <Text id="welcome-text" text="Welcome" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"/> <Label text="User Name:" GridPane.columnIndex="0" GridPane.rowIndex="1"/> <TextField fx:id="usernameField" GridPane.columnIndex="1" GridPane.rowIndex="1"/> <Label text="Password:" GridPane.columnIndex="0" GridPane.rowIndex="2"/> <PasswordField fx:id="passwordField" GridPane.columnIndex="1" GridPane.rowIndex="2"/> <HBox spacing="10" alignment="bottom_right" GridPane.columnIndex="1“ GridPane.rowIndex="4"> <Button text="Sign In" onAction="#handleSubmitButtonAction"/> </HBox> <Text fx:id="actiontarget" GridPane.columnIndex="1" GridPane.rowIndex="6"/> </GridPane>
Examples – Forms v3.0 (IV) public class Sample { @FXML private TextField usernameField; @FXML private PasswordField passwordField; @FXML private Text actiontarget; @FXML protected void handleSubmitButtonAction( ActionEvent event ) { if ( passwordField.getText().equals( "Go" ) ) actiontarget.setText( "Signed in as " + usernameField.getText() + "!" ); else actiontarget.setText( "Username or Password not valid" ); } }
Examples – Forms v3.0 (IV) public class Sample { @FXML private TextField usernameField; @FXML private PasswordField passwordField; @FXML private Text actiontarget; @FXML protected void handleSubmitButtonAction( ActionEvent event ) { if ( passwordField.getText().equals( "Go" ) ) actiontarget.setText( "Signed in as " + usernameField.getText() + "!" ); else actiontarget.setText( "Username or Password not valid" ); } }
Examples – Forms v3.0 (IV) public class Sample { @FXML private TextField usernameField; @FXML private PasswordField passwordField; @FXML private Text actiontarget; @FXML protected void handleSubmitButtonAction( ActionEvent event ) { if ( passwordField.getText().equals( "Go" ) ) actiontarget.setText( "Signed in as " + usernameField.getText() + "!" ); else actiontarget.setText( "Username or Password not valid" ); } }
Examples – Forms v3.0 (V) @Override public void start(Stage primaryStage) { Parent root = FXMLLoader.load( getClass().getResource( "Sample.fxml“) ); stage.setTitle( "FXML Welcome!" ); stage.setScene( new Scene( root ) ); stage.show(); }
Examples – Forms v3.0 (V) @Override public void start(Stage primaryStage) { Parent root = FXMLLoader.load( getClass().getResource( "Sample.fxml“) ); stage.setTitle( "FXML Welcome!" ); stage.setScene( new Scene( root ) ); stage.show(); }
Examples – Forms v3.0 (V) @Override public void start(Stage primaryStage) { Parent root = FXMLLoader.load( getClass().getResource( "Sample.fxml“) ); stage.setTitle( "FXML Welcome!" ); stage.setScene( new Scene( root ) ); stage.show(); }
Examples - Images @Override public void start(Stage primaryStage) { Image iJavaFx = new Image( getClass().getResourceAsStream( "indice.jpg" )); ImageViewivJavaFx = newImageView(); ivJavaFx.setImage( iJavaFx ); root.getChildren().add( ivJavaFx ); primaryStage.setScene(new Scene(root, 600, 500)); primaryStage.show(); }
Examples - Images @Override public void start(Stage primaryStage) { Image iJavaFx = new Image( getClass().getResourceAsStream( "indice.jpg" )); ImageViewivJavaFx = new ImageView(); ivJavaFx.setImage(iJavaFx); root.getChildren().add( ivJavaFx ); primaryStage.setScene(new Scene(root, 600, 500)); primaryStage.show(); }
Examples - Images @Override public void start(Stage primaryStage) { Image iJavaFx = new Image( getClass().getResourceAsStream( "indice.jpg" )); ImageViewivJavaFx = newImageView(); ivJavaFx.setImage(iJavaFx); root.getChildren().add( ivJavaFx ); primaryStage.setScene(new Scene(root, 600, 500)); primaryStage.show(); }
Examples - Images @Override public void start(Stage primaryStage) { Image iJavaFx = new Image( getClass().getResourceAsStream( "indice.jpg" )); ImageView ivJavaFx = new ImageView(); root.getChildren().add( ivJavaFx ); primaryStage.setScene(new Scene(root, 600, 500)); primaryStage.show(); }