是否可以将 javaFX Pane 原点设置为左下角?

Man*_*ain 3 java javafx

是否可以将 a 的原点设置Pane为左下角(而不是左上角)?我在画布上添加了许多在“数学坐标系”中定义的形状。

我认为也许有一种比总是从 y 坐标中减去高度更简单的方法。另一个优点是我不必负责调整窗格的大小。

Jam*_*s_D 5

如果您所做的只是使用形状,则可以将反射应用到窗格。您可以将反射表示为Scale和。唯一棘手的部分是您必须将比例尺的轴保持在垂直中心,这需要绑定,以防窗格改变大小。x=1y=-1

如果您将控件或文本放入窗格中,那么它们也会被反映,因此它们看起来不正确。但如果您所做的只是使用形状,那么这将起作用。

import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.transform.Scale;
import javafx.stage.Stage;

public class ReflectedPaneTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        Pane pane = new Pane();
        Scale scale = new Scale();
        scale.setX(1);
        scale.setY(-1);

        scale.pivotYProperty().bind(Bindings.createDoubleBinding(() -> 
            pane.getBoundsInLocal().getMinY() + pane.getBoundsInLocal().getHeight() /2, 
            pane.boundsInLocalProperty()));
        pane.getTransforms().add(scale);

        pane.setOnMouseClicked(e -> 
            System.out.printf("Mouse clicked at [%.1f, %.1f]%n", e.getX(), e.getY()));

        primaryStage.setScene(new Scene(pane, 600, 400));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)