Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marcotrombino/fxrouter
A simple JavaFX router to switch between application scenes
https://github.com/marcotrombino/fxrouter
java-gui-application javafx javafx-library javafx-multiple-scenes
Last synced: 4 months ago
JSON representation
A simple JavaFX router to switch between application scenes
- Host: GitHub
- URL: https://github.com/marcotrombino/fxrouter
- Owner: Marcotrombino
- License: gpl-3.0
- Created: 2017-12-14T23:53:11.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2017-12-28T15:09:23.000Z (about 7 years ago)
- Last Synced: 2024-10-12T18:41:06.279Z (4 months ago)
- Topics: java-gui-application, javafx, javafx-library, javafx-multiple-scenes
- Language: Java
- Homepage:
- Size: 31.3 KB
- Stars: 36
- Watchers: 5
- Forks: 11
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FXRouter
[![release](http://github-release-version.herokuapp.com/github/Marcotrombino/FXRouter/release.svg?style=flat)](https://github.com/Marcotrombino/FXRouter/releases/latest)
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)A simple JavaFX router to switch between application scenes
[Example](#example)
## Download
Get latest release [here](https://github.com/Marcotrombino/FXRouter/releases/latest)## Supported versions
- 0.0.x - Support for Java 9
- master (1.0.x) - Support for Java 8
### Advantages
You can switch between your scenes from anywhere through a simple method, without worrying about annoying Stage settings.## Usage
### 1. Bind
Add FXRouter as project dependency and import it from its package:
```java
import com.github.fxrouter.FXRouter;
```
Connect FXRouter to your application stage: call `bind()` from your main class `start()` method (if you use IntelliJ IDEA) or similar:
```java
FXRouter.bind(this, primaryStage);
```
##### You can optionally set application title and size (width, height):
```java
FXRouter.bind(this, primaryStage, "MyApplication", 800, 600);
```
### 2. Set routes
Define your Application routes with a label identifier and its corresponding .fxml screen file:
```java
FXRouter.when("login", "myloginscreen.fxml");
FXRouter.when("profile", "myprofilescreen.fxml");
// ... others
```
##### You can optionally specify the route title and size (width, height):
```java
FXRouter.when("login", "myloginscreen.fxml", "My login screen", 1000, 500);
```
### 3. Switch
Switch routes from anywhere (controllers, services, etc):
```java
FXRouter.goTo("login"); // switch to myloginscreen.fxml
```### Passing and retrieving data between routes
Your application could need to pass some data to another route and then retrieve those data:
#### Send data from the current scene
`goTo()` accepts two parameters: a route identifier and a `Object`:
##### (Multiples data could be stored on an appropriate Collection)
```java
FXRouter.goTo("profile", "johndoe22"); // switch to myprofilescreen.fxml passing an username
```
#### Get data from the destination scene
`getData()` returns a `Object` which can be cast to appropriate data type:
```java
String username = (String) FXRouter.getData(); // retrieve johndoe22
```## Example
#### Without FXRouter
A common JavaFX project starter:
```java
package sample;import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}public static void main(String[] args) {
launch(args);
}
}
```#### Using FXRouter
```java
package sample;import javafx.application.Application;
import javafx.stage.Stage;
import sample.FXRouter; // import FXRouterpublic class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
FXRouter.bind(this, primaryStage, "Hello World", 300, 275); // bind FXRouter
FXRouter.when("firstPage", "sample.fxml"); // set "firstPage" route
FXRouter.goTo("firstPage"); // switch to "sample.fxml"
}public static void main(String[] args) {
launch(args);
}
}
```### Switch animation
You can also set an animation type when you switch between routes:
```java
FXRouter.setAnimationType("fade");
```
##### You can optionally specify the animation duration (ms):
```java
FXRouter.setAnimationType("fade", 1200);
```
#### animationType
| AnimationType | Default duration |
| ------------- | ------------- |
| `fade` | 800 |