2009-10-07 93 views
10

Làm cách nào để có được vị trí thực tế của một nút trong cảnh. Vị trí tuyệt đối, bất kể thùng chứa/biến đổi nào.Nhận tọa độ toàn cầu của một Nút trong JavaFX

Ví dụ: tôi muốn dịch một nút nhất định a để tạm thời chồng chéo một nút khác b. Vì vậy, tôi muốn thiết lập thuộc tính translateX của mình thành b.globalX-a.globalX.

Các tài liệu nói:

Xác định X phối hợp của dịch đó sẽ được thêm vào tọa độ chuyển đổi của Node này với mục đích bố trí. Vùng chứa hoặc Bố cục biểu diễn nhóm sẽ đặt biến này liên quan đến bố cụcBóng.minX để định vị nút tại bố cục mong muốn vị trí.

Ví dụ, nếu con nên có một vị trí cuối cùng của finalX:

child.layoutX = finalX - child.layoutBounds.minX; 

Đó là, các tọa độ cuối cùng của bất kỳ nút nên

finalX = node.layoutX + node.layoutBounds.minX 

Tuy nhiên chạy đoạn mã sau :

var rect; 
Stage { 
    title: "Application title" 
    width: 250 
    height:250 
    scene: Scene { 
     content: [ 
      Stack{content:[rect = Rectangle { width:10 height:10}] layoutX:10} 
     ] 
    } 
} 

println("finalX = {rect.layoutX+rect.layoutBounds.minX}"); 

cung cấp cho tôi finalX = 0.0 thay vì finalX = 10.0 vì tài liệu dường như có trạng thái.

Có phương pháp rõ ràng để nhận tọa độ vị trí hoàn toàn cuối cùng trong JavaFX không?

+1

Chỉ cần tự hỏi, những gì định dạng là các mã trên trong? Nó không phải là Java, có thể là JSON? –

+0

Đó là JavaFX, một ngôn ngữ lập trình mới từ Sun/Oracle. –

+0

Định dạng, tôi biết đó là JavaFX, nhưng nó không phải là mã Java. –

Trả lời

3

Giải pháp duy nhất tôi tìm thấy cho đến nay là

rect.localToScene(rect.layoutBounds.minX, rect.layoutBounds.minY) // a Point2D{x:Float y:Float} object 

Mà không có vẻ với tôi như là cách "tốt nhất" để làm điều đó (lưu ý rằng chức năng này không bị ràng buộc). Nó vẫn hoạt động với JavaFX 1.2.

12

Đối với giới hạn:

bounds = rect.localToScene(rect.getBoundsInLocal()); 

làm việc cho JavaFX 1 và 2.

Các vấn đề liên quan