| Table of Contents | 4 |
|---|
| About the Authors | 14 |
|---|
| About the Contributors | 15 |
|---|
| About the Technical Reviewer | 19 |
|---|
| Foreword | 20 |
|---|
| Chapter 1: Getting Started with Client Java | 22 |
|---|
| Java Client Technology in Action | 22 |
| Java Client in Business | 23 |
| Gaming and 3D | 24 |
| Mobile Conference Apps | 26 |
| A Modern Approach to Client Java | 27 |
| Target Mobile First | 27 |
| Build for the Cloud | 29 |
| Package Your Platform | 31 |
| Setting Up Your Environment | 32 |
| Mac OS X JDK Installation | 33 |
| Windows JDK Installation | 34 |
| Linux JDK Installation | 38 |
| JavaFX Installation | 38 |
| Your First Modern Java Client | 40 |
| Coding Client Apps with IntelliJ IDEA | 40 |
| Rapid Application Development with Scene Builder | 46 |
| The Path to Modern Client Development | 53 |
| Chapter 2: JavaFX Fundamentals | 54 |
|---|
| JavaFX Stage and Scene Graph | 54 |
| JavaFX Is Single-Threaded | 55 |
| Hierarchical Node Structure | 55 |
| A Simple Shape Example | 57 |
| Color | 59 |
| Text Is a Shape | 60 |
| The JavaFX Coordinate System | 60 |
| Layout Controls | 61 |
| StackPane | 61 |
| AnchorPane | 62 |
| GridPane | 62 |
| FlowPane and TilePane | 63 |
| BorderPane | 63 |
| SplitPane | 64 |
| HBox, VBox, and ButtonBar | 64 |
| Make a Scene | 64 |
| Enhancing the MyShapes Application | 65 |
| Linear Gradient | 65 |
| DropShadow | 66 |
| Reflection | 67 |
| Configuring Actions | 68 |
| Animation | 69 |
| JavaFX Properties | 71 |
| Property Listeners | 72 |
| Invalidation Listeners | 72 |
| Change Listeners | 74 |
| Binding | 75 |
| Unidirectional Binding | 75 |
| Bidirectional Binding | 76 |
| Fluent API and Bindings API | 76 |
| Using FXML | 78 |
| Controller Class | 81 |
| JavaFX Application Class | 83 |
| Adding CSS | 84 |
| Using Scene Builder | 86 |
| Putting It All Together | 87 |
| Master-Detail UI | 87 |
| The Model | 90 |
| Observable Lists | 92 |
| Implementing ListView Selection | 93 |
| Using Multiple Selection | 93 |
| ListView and Sort | 94 |
| Person UI Application Actions | 95 |
| Delete a Person | 95 |
| Add a Person | 96 |
| Update a Person | 97 |
| Key Point Summary | 100 |
| Chapter 3: Properties and Bindings | 102 |
|---|
| Key Concepts | 103 |
| Observable and InvalidationListener | 104 |
| ObservableValue and ChangeListener | 104 |
| WritableValue and ReadOnlyProperty | 105 |
| JavaFX Properties | 105 |
| Creating Bindings | 110 |
| JavaFX Bindings | 110 |
| Create Bindings by Direct Extension | 111 |
| Type-Specific Specializations | 113 |
| Factory Methods in Bindings | 116 |
| Create Bindings with the Fluent API | 119 |
| Observable Collections | 125 |
| Factory and Utility Methods in FXCollections | 125 |
| Change Listeners for Observable Collections | 130 |
| Change Events in ListChangeListener | 133 |
| Change Events in MapChangeListener | 138 |
| Change Events in SetChangeListener | 141
|