Load FXML trong 1 FXML cha và kích hoạt event từ FXML cha

Em đang gặp 1 vấn đề đó là không biết làm sao để gọi 1 component từ FXML cha. 2 file FXML cha và con là riêng biệt, em chỉ load cái fxml phía trong 1 pane của FXML cha. Giờ em muốn bấm button trong FXML con thì gọi tới 1 component trong lớp cha. Cái này nó kiểu gọi 1 component của 1 FXML từ 1 FXML khác. Cần cao nhân chỉ điểm

Tùy vào cách sử dụng của bạn, thiết kết của bạn, cần chú ý những concepts sau bạn sẽ tìm ra:

  1. Hoặc con giữ “reference” Controller của cha. Bản thân controller của cha có thể truy trực tiếp đến node con cần thiết.

  2. Hoặc con giữ “reference” của node cha. Từ node cha có thể truy theo concept như DOM với lookup(String s), trong đó s là class của node hoặc id của node.

  3. Ko giữ “reference” gì cả, truy ngược với getParent() rồi lài truy xuôi với lookup().

PS: Javafx bạn bạn nên đổi cách gọi “component” -> node.

1 Like

Em không hiểu lắm về cụm từ reference, anh có thể giải thích thêm được không ạ?. Em cảm ơn

4 . Controller của node cha giữ “reference” của controller con. Đứng ở context của cha để add EventHandler vào con, trong EventHandler thích làm gì với thành phần của cha thì làm.

5 . Tại node con, fireEvent(). Cha là container của con nên nằm sẵn trong dispatchain, gắn EventHandler cho node cha với event này. Trong EventHandler thích làm gì thì làm. Cách này cũng ko phải quan tâm đến reference nào cả.

Nếu bạn học C++ thì biết reference là gì, tham chiếu tới đối tượng / biến. nhưng đây là Java, mình tạm gọi là “reference”.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?