2013-08-20 29 views
6

Có cách nào để tìm nút gốc (cao trong phân cấp) thông qua phương pháp không? Có thể sử dụng id hoặc lớp phần tử.JavaFx Tìm nút nguồn gốc có id cụ thể?

Mọi phương án thay thế cho thứ như thế này?

source.getParent().getParent().getParent().getParent().getParent().getParent(); 

Trả lời

9

Bạn có thể tra cứu bất kỳ Node bằng ID của nó từ đối tượng Scene.

Ví dụ:

Scene scene = source.getScene(); 
Node nodeToFind = scene.lookup("#nodeToFindId"); 

ID là một chọn CSS (id), hoặc một ID FX. Nó phải được thiết lập trên nút mà không có ký tự '#'. Khi gọi phương thức 'tra cứu', ký tự '#' phải đứng trước ID, như trên.

+0

Hm .. Tôi nhận được java.lang.NullPointerException. Có lẽ vấn đề là tôi đang bắt đầu biểu đồ của tôi như thế này: gantChartStage = new RmsGantChart(); gantChartStage.initModality (Modality.NONE); RmsGantChart mở rộng Giai đoạn gantChartStage.showAndWait(); – kingkong

+0

Node nguồn có được hiển thị trong một cảnh khi bạn tìm cách tra cứu "nodeToFindID" không? – Aaron

0

Vâng, tôi biết bạn muốn tránh điều đó nhưng nó vẫn không phải là xấu và làm công việc:

Node node = youNode; 
while (node != null){ 
    node = node.getParent(); 
} 
Node parentNode = node; 

Nếu không nếu bạn có quyền truy cập vào các đối tượng cảnh:

Node parentNode = scene.getRoot(); 
+0

nếu nút (node.getId() bằng (myd) trả về trong vòng lặp while, và sau đó là ok. – pdem

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