如何在窗格中获取绘制矩形的坐标?
这是我绘制矩形的方式:
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
那么如何获得绘制矩形的坐标?在绘制之前不将坐标传递给列表。
谢谢
答案 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();