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

时间:2015-06-07 16:31:18

标签: java javafx

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

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

1 个答案:

答案 0 :(得分:2)

如果您正在使用的是形状,则可以将反射应用于窗格。您可以使用y=-1import 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); } } 将反映表示为Scale。唯一棘手的部分是你必须将刻度的枢轴保持在垂直中心,这需要一个绑定,以防窗格改变大小。

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

async