[英]Move undecorated stage on mouse drag
假設root
是您的父節點,即您在創建Scene
使用的父節點。 xOffset
和yOffset
是double
yOffset
型變量。 您可以使用以下代碼來拖動窗口:
root.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
xOffset = event.getSceneX();
yOffset = event.getSceneY();
}
});
root.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
primaryStage.setX(event.getScreenX() - xOffset);
primaryStage.setY(event.getScreenY() - yOffset);
}
});
我明白
import javafx.application.Application;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class Main extends Application
{
private double xOffset = 0;
private double yOffset = 0;
private static class Delta {
double x, y;
}
final Delta dragDelta = new Delta();
final BooleanProperty inDrag = new SimpleBooleanProperty(false);
@Override public void start(final Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("Login.fxml"));
primaryStage.initStyle(StageStyle.UNDECORATED);
root.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
dragDelta.x = primaryStage.getX() - event.getScreenX();
dragDelta.y = primaryStage.getY() - event.getScreenY();
xOffset = event.getSceneX();
yOffset = event.getSceneY();
}
});
root.setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
primaryStage.setX(event.getScreenX() + dragDelta.x);
primaryStage.setY(event.getScreenY() + dragDelta.y);
primaryStage.getWidth();
primaryStage.getHeight();
primaryStage.getX();
primaryStage.getY();
inDrag.set(true);
}
});
primaryStage.setTitle("Login");
primaryStage.setResizable(false);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.