ฉันมีฟังก์ชันที่อัปเดต ListView
ในคลาสตัวควบคุม FXML ของฉัน ฉันต้องการให้สิ่งนี้ทำงานทุกครั้งที่ผู้ใช้กด F5
ฉันไม่แน่ใจว่าวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้คืออะไร และลองทำดังนี้:
1. รับฉากจากคอนโทรลเลอร์
ฉันพยายามดึงฉากแบบ ที่นี่ และเพิ่ม scene.onKeyPressed(e -> ...);
แต่ฉันล้มเหลวในการหาวิธีที่จะทำให้ฉากนั้นเชื่อถือได้
2. เรียกใช้ฟังก์ชันจากภายนอก
นอกจากนี้ ฉันพยายามจัดการสิ่งนี้จากตัวควบคุมฉาก ไม่ใช่วิธีที่ฉันชอบ เพราะฉันไม่ต้องการเรียกใช้วิธีนี้เมื่อไม่ได้โหลดไฟล์นี้โดยเฉพาะ ฉันโหลดไฟล์ FXML ด้วย layout.setCenter(FXMLLoader.load(...));
ฉันไม่สามารถรับอินสแตนซ์ของคอนโทรลเลอร์ได้ ซึ่งฉันสามารถเรียกใช้เมธอดนี้ได้
เกิดอะไรขึ้นกับการออกแบบของฉัน? หรือมีคำอธิบายประกอบ @FXML ที่อนุญาตให้ฉันจัดการ KeyEvent
ได้
ตัวอย่าง
ตัวจัดการแอปพลิเคชัน:
@Override
public void start(Stage stage){
BorderPane layout = new BorderPane();
Scene scene = new Scene(layout);
layout.setCenter(FXMLLoader.load(getClass().getResource("/designs/lobby.fxml");
}
ล็อบบี้ Fxmlคอนโทรลเลอร์:
@FXML private ListView<Label> lobbyListView;
@FXML
public void initialize(){
//I can't get the scene here
}
private void loadLobbies(){
// I need to run this on F5 presses
lobbyListView.setItems("lobby 1", "lobby 2", "lobby 3");
}
onAction="#handlerMethod"
ในไฟล์ fxml (และวิธีการที่เกี่ยวข้องในคอนโทรลเลอร์) แต่ฉันต้องการสิ่งนี้เมื่อกดปุ่มในมุมมองนี้ การดำเนินการที่ถูกต้องสำหรับสิ่งนี้คืออะไร และฉันจะวางไว้ที่ไหน โอเค ฉันตอบข้อกังวลของฉันไปแล้ว ขอโทษนะ 555 ฉันต้องใช้onKeyPressed
ในวัตถุหลักในไฟล์ FXML - person Lukas   schedule 17.04.2021