ฉันจะเข้าถึงแบบฟอร์มจากคลาสคอนโทรลเลอร์อื่นใน JavaFX ได้อย่างไร

คลาส: DbUserController.cs

      btnTamam.setOnAction((ActionEvent event) -> {
        ......
        ........
      FXMLLoader fxmlLoader = new FXMLLoader();
      fxmlLoader.setLocation(getClass().getResource("/View/PerformancePage.fxml"));        
      AnchorPane frame = fxmlLoader.load();
      PerformancePageController c = (PerformancePageController) fxmlLoader.getController();
      c.txtUrl.setText("TEST TEST");
    });

txtUrl = PerformancePage.fxml TextField
c.txtUrl.setText("ทดสอบ ทดสอบ");

รหัสที่ฉันชี้ไปไม่ทำงาน

มันไม่ได้เขียน "TEST TEST" ลงในกล่องข้อความ


person Ömer Çelik    schedule 16.03.2017    source แหล่งที่มา


คำตอบ (1)


คุณกำลังโหลดบานหน้าต่างใหม่:

AnchorPane frame = fxmlLoader.load();

แต่คุณไม่ได้เพิ่มบานหน้าต่างนั้นลงใน SceneGraph ที่แสดง

person purring pigeon    schedule 16.03.2017
comment
ฉันเข้าใจ. ฉันจะแก้ไขได้อย่างไร? - person Ömer Çelik; 17.03.2017
comment
คุณต้องเพิ่มเฟรมให้กับฉากปัจจุบัน หรือวางเฟรมไว้บนเวทีของตัวเอง ในข้อมูลโค้ดของคุณมีข้อมูลไม่เพียงพอที่จะแม่นยำกว่าสิ่งที่ฉันให้ไว้ - person purring pigeon; 17.03.2017
comment
หรือหากคุณกำลังโหลด PerformancePage.fxml ที่อื่นอยู่แล้ว และ จากนั้นแสดงมัน คุณจะต้องรับคอนโทรลเลอร์จากตัวโหลดที่โหลดอินสแตนซ์ที่แสดง ประเด็นก็คือ คุณต้องมีคอนโทรลเลอร์ที่แนบมากับอินสแตนซ์ของ UI ที่แสดงอยู่ - person James_D; 17.03.2017
comment
คุณต้องเพิ่มสิ่งนั้นเข้าไปในฉาก มีจุดใดบน UI ที่คุณคาดหวังที่จะเห็นสิ่งนี้หรือไม่? หากไม่เข้าใจเลย์เอาต์ของคุณมากขึ้น เราก็ช่วยอะไรไม่ได้มากนัก ตอนนี้คุณมีโหนดที่โหลดลงในตัวแปรแล้ว คุณต้องแนบสิ่งนั้นกับ UI เช่น root.getChildren().add(frame); - person purring pigeon; 20.03.2017