I need to make my bottom AnchorPane
transparent, and I used below code to do that. It works, but after that I cannot move my application by drag?
JavaScript
x
Parent root = FXMLLoader.load(getClass().getResource("view/DashBoardForm.fxml"));
primaryStage.initStyle(StageStyle.TRANSPARENT);
Scene scene = new Scene(root);
scene.setFill(Color.TRANSPARENT);
primaryStage.setScene(scene);
primaryStage.show();
I cannot move application around the workspace; how can I fix it ?
Advertisement
Answer
You can see this example
JavaScript
public class Demo extends Application {
double x = 0;
double y = 0;
double sceneX = 0;
double sceneY = 0;
@Override
public void start(Stage primaryStage) {
var anchorPane = new AnchorPane();
var button = new Button("button");
var background = new Background(new BackgroundFill(Paint.valueOf("#FFB5C5"), new CornerRadii(15), new Insets(0)));
anchorPane.setBackground(background);
anchorPane.setBorder(new Border(new BorderStroke(Color.valueOf("#912CEE"), BorderStrokeStyle.SOLID, new CornerRadii(15), new BorderWidths(2), new Insets(0))));
button.setOnMousePressed(event -> {
x = event.getX();
y = event.getY();
});
button.setOnMouseDragged(event -> {
var sceneX = event.getSceneX();
var sceneY = event.getSceneY();
AnchorPane.setLeftAnchor(button, sceneX - x);
AnchorPane.setTopAnchor(button, sceneY - y);
});
anchorPane.getChildren().add(button);
AnchorPane.setTopAnchor(button, 100.0);
AnchorPane.setLeftAnchor(button, 100.0);
var scene = new Scene(anchorPane);
scene.setFill(Paint.valueOf("#ffffff00"));
scene.setOnMousePressed(event -> {
sceneX = event.getSceneX() - primaryStage.getX();
sceneY = event.getSceneY() - primaryStage.getY();
});
scene.setOnMouseDragged(event -> {
primaryStage.setX(event.getScreenX() - sceneX);
primaryStage.setY(event.getScreenY() - sceneY);
});
primaryStage.initStyle(StageStyle.TRANSPARENT);
primaryStage.setScene(scene);
primaryStage.setTitle("JavaFx");
primaryStage.setWidth(800);
primaryStage.setHeight(800);
primaryStage.show();
}
}
But I think there will be a better way