如何使Controller可以拖动JavaFX TRANPARENT / UNDECORATED窗口?

时间:2017-08-05 08:35:32

标签: java javafx javafx-8 fxml fxmlloader

我正在尝试使我的JavaFX透明子窗口可以通过Controller (和FXML)拖动。 我已经通过AnotherWindow.java使它成为可拖动的那样:

public class AnotherWindow {
double yOffset; double xOffset;

Stage anotherStage = new Stage();
public AnotherWindow(String fxml) {
    try {
        Parent root = (Parent) FXMLLoader.load(getClass().getResource(fxml));
        Scene scene = new Scene(root);
        scene.getStylesheets().add(getClass().getResource("../application/application.css").toExternalForm());


        scene.setOnMousePressed(event -> {
            if(event.)
            xOffset = anotherStage.getX() - event.getScreenX();
            yOffset = anotherStage.getY() - event.getScreenY();
        });
        scene.setOnMouseDragged(event -> {
            anotherStage.setX(event.getScreenX() + xOffset);
            anotherStage.setY(event.getScreenY() + yOffset);
        });

        anotherStage.setResizable(false);
        anotherStage.setAlwaysOnTop(true);
        anotherStage.setScene(scene);
        anotherStage.setTitle("Control Panel(AutoClicker)");
        anotherStage.getScene().setFill(Color.TRANSPARENT);
        anotherStage.initStyle(StageStyle.TRANSPARENT);
        anotherStage.show();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

我想让它可以通过Controller进行拖动的原因是我想通过拖动按钮而不是拖动整个场景/窗口来移动窗口。

希望你能帮助我! (抱歉我的英语不好,我很年轻) 〜亨利

0 个答案:

没有答案