0
集團
形狀的場景中的位置我有這樣一組形狀:查找
Group g = new Group();
Rectangle r = new Rectangle(100, 100, 50, 50);
Circle c = new Circle(125, 125, 10);
g.getChildren().addAll(r, c);
和線,這是不是該組中,在圓的中心結束的一部分。
Line l = new Line(0, 0, 125, 125);
我已使集團可以圍繞按鼠標事件被拖到演示合奏(只是一對夫婦的鼠標偵聽器更新x和y平移性質的)。但我希望在該行的末尾跟隨圈子的中心。這意味着更新該行的endX和endY屬性。
我遇到的問題是endX和endY在場景局部空間(我認爲)。當我在屏幕上拖動該組時,circle的centerX和centerY屬性不會更新。我似乎得到的是對該組的translationX和translationY的更改。我無法弄清楚如何在拖動操作之後(和拖動操作過程中)找到圓的新中心。
指針非常感激地收到,因爲這讓我把我的頭髮撕掉!
我想出的最佳解決方案是在該組上放置一個翻譯監聽器,獲取該圓的中心位置,然後添加該組的翻譯,但結果並不是很好線粗略地跟隨着圓,但是跳起來並且漂移。事情是這樣的:
translateXProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov, Number oldValue, Number newValue) {
Connector c = getInputConnectors().get(0);
double x = circle.getCenterX();
double y = circle.getCenterY();
line.setEndX(x + newValue.doubleValue());
}
});
謝謝你,現在就開始工作。綁定比我所嘗試的方法更清潔和簡單(我有X和Y的聽衆,他們幾乎相同,所以我只包含一個)。 – wobblycogs
我看到:)不確定那麼,爲什麼聽衆的方法沒有奏效 –