Created
December 28, 2015 15:20
-
-
Save jalopezsuarez/9b343f1138649ed076b4 to your computer and use it in GitHub Desktop.
JavaFX NoDecoration/Transitions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package application; | |
import javafx.application.Application; | |
import javafx.application.Platform; | |
import javafx.event.ActionEvent; | |
import javafx.event.EventHandler; | |
import javafx.stage.Stage; | |
import javafx.stage.StageStyle; | |
import javafx.scene.Scene; | |
import javafx.scene.layout.BorderPane; | |
import javafx.scene.layout.HBox; | |
import javafx.animation.KeyFrame; | |
import javafx.animation.KeyValue; | |
import javafx.animation.Timeline; | |
import javafx.application.Application; | |
import javafx.geometry.Insets; | |
import javafx.geometry.Pos; | |
import javafx.scene.Cursor; | |
import javafx.scene.Group; | |
import javafx.scene.Scene; | |
import javafx.scene.control.Button; | |
import javafx.scene.control.ToolBar; | |
import javafx.scene.input.MouseEvent; | |
import javafx.scene.layout.BorderPane; | |
import javafx.scene.layout.StackPane; | |
import javafx.scene.paint.Color; | |
import javafx.scene.shape.Rectangle; | |
import javafx.stage.Stage; | |
import javafx.util.Duration; | |
public class SlidingViews extends Application { | |
class WindowButtons extends HBox { | |
public WindowButtons() { | |
Button closeBtn = new Button("X"); | |
closeBtn.setOnAction(new EventHandler<ActionEvent>() { | |
@Override | |
public void handle(ActionEvent actionEvent) { | |
Platform.exit(); | |
} | |
}); | |
this.getChildren().add(closeBtn); | |
} | |
} | |
@Override | |
public void start(Stage primaryStage) { | |
Rectangle rectangle1 = new Rectangle(300, 250); | |
rectangle1.setFill(Color.RED); | |
primaryStage.initStyle(StageStyle.UNDECORATED); | |
ToolBar toolBar = new ToolBar(); | |
int height = 25; | |
toolBar.setPrefHeight(height); | |
toolBar.setMinHeight(height); | |
toolBar.setMaxHeight(height); | |
toolBar.getItems().add(new WindowButtons()); | |
Button nextView = new Button("Next"); | |
nextView.setPadding(new Insets(10)); | |
BorderPane view1 = new BorderPane(rectangle1, null, null, nextView, null); | |
BorderPane.setAlignment(nextView, Pos.CENTER); | |
view1.setTop(toolBar); | |
Group view2 = new Group(); | |
Rectangle rectangle2 = new Rectangle(300, 250); | |
rectangle2.setFill(Color.BLUE); | |
view2.getChildren().add(rectangle2); | |
StackPane root = new StackPane(view1); | |
nextView.setOnAction(event -> { | |
root.getChildren().add(view2); | |
double width = root.getWidth(); | |
KeyFrame start = new KeyFrame(Duration.ZERO, | |
new KeyValue(view2.translateXProperty(), width), | |
new KeyValue(view1.translateXProperty(), 0)); | |
KeyFrame end = new KeyFrame(Duration.seconds(0.1), | |
new KeyValue(view2.translateXProperty(), 0), | |
new KeyValue(view1.translateXProperty(), -width)); | |
Timeline slide = new Timeline(start, end); | |
slide.setOnFinished(e -> root.getChildren().remove(view1)); | |
slide.play(); | |
}); | |
// view2.setTop(toolBar); | |
Scene scene = new Scene(root, 400, 400); | |
primaryStage.setScene(scene); | |
primaryStage.show(); | |
class Delta { double x, y; } | |
final Delta dragDelta = new Delta(); | |
toolBar.setOnMousePressed(new EventHandler<MouseEvent>() { | |
@Override public void handle(MouseEvent mouseEvent) { | |
// record a delta distance for the drag and drop operation. | |
dragDelta.x = primaryStage.getX() - mouseEvent.getScreenX(); | |
dragDelta.y = primaryStage.getY() - mouseEvent.getScreenY(); | |
//scene.setCursor(Cursor.MOVE); | |
} | |
}); | |
toolBar.setOnMouseDragged(new EventHandler<MouseEvent>() { | |
@Override public void handle(MouseEvent mouseEvent) { | |
primaryStage.setX(mouseEvent.getScreenX() + dragDelta.x); | |
primaryStage.setY(mouseEvent.getScreenY() + dragDelta.y); | |
} | |
}); | |
} | |
public static void main(String[] args) { | |
launch(args); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment