获取在窗格中绘制的矩形坐标

时间:2016-11-24 05:45:45

标签: javafx rectangles

如何在窗格中获取绘制矩形的坐标?

这是我绘制矩形的方式:

Rectangle r = new Rectangle();
r.setX(50);
r.setY(50);
r.setWidth(200);
r.setHeight(100);
r.setStroke(Color.BLUE);
r.setStrokeWidth(1);
r.setFill(Color.TRANSPARENT);
DragResizeMod.makeResizable(r);
pane.getChildren().add(r);

这是用于调整矩形大小的类的链接

https://github.com/varren/JavaFX-Resizable-Draggable-Node/blob/master/src/sample/DragResizeMod.java

那么如何获得绘制矩形的坐标?在绘制之前不将坐标传递给列表。

谢谢

2 个答案:

答案 0 :(得分:1)

有几种可能的解决方案,但一个简单的解决方案可能是向xProperty xProperty @ Rectangle JavaDoc和类似yProperty添加处理程序,如下所示:

rectangle.xProperty().addListener((Observable, oldValue, newValue) -> {
    System.out.println("X position changed from <" + oldValue + "> to <" + newValue + ">");
});

为了完整性,您还应该为widthProperty添加处理程序(类似于heightProperty)。正如JavaDoc引用了xProperty

  

定义矩形左上角的X坐标。

意思是如果你是更改大小但左上角仍然在同一位置,您不会收到xProperty的通知!

答案 1 :(得分:0)

如果您在调整大小后只需要坐标:使用boundsInParent属性。除非您使用剪切/旋转组件应用变换,否则这将为您提供Rectangle的边界。如果您使用调整其子项位置的Parent,则位置可能不正确,但Pane不是其中之一(但其中有许多是子类):

Rectangle r = ...
...
// resize

Bounds boundsAfterResize = r.getBoundsInParent();