Saya memiliki fungsi yang memperbarui ListView
di Kelas Pengontrol FXML saya. Saya ingin ini dijalankan setiap kali pengguna menekan F5
.
Saya tidak yakin apa cara terbaik untuk mencapai ini dan mencoba yang berikut:
1. Dapatkan adegan dari pengontrol
Saya mencoba menampilkan adegan seperti di sini dan menambahkan scene.onKeyPressed(e -> ...);
. Namun saya gagal menemukan cara untuk menampilkan adegan tersebut dengan andal.
2. Panggil fungsi tersebut dari luar
Selanjutnya saya mencoba menangani ini dari pengontrol adegan saya, bukan cara pilihan saya, karena saya tidak ingin memanggil metode ini ketika file khusus ini tidak dimuat. Saya memuat file FXML dengan layout.setCenter(FXMLLoader.load(...));
Saya gagal mendapatkan instance dari Controller itu sendiri, di mana saya dapat memanggil metode tersebut.
Apa yang salah dengan desain saya? Atau apakah ada anotasi @FXML yang memungkinkan saya menangani KeyEvent
?
Contoh
Manajer Aplikasi:
@Override
public void start(Stage stage){
BorderPane layout = new BorderPane();
Scene scene = new Scene(layout);
layout.setCenter(FXMLLoader.load(getClass().getResource("/designs/lobby.fxml");
}
Pengontrol LobiFxml:
@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"
di file fxml (dan metode yang sesuai di pengontrol). Tapi saya ingin ini saat tombol ditekan dalam tampilan ini, tindakan apa yang benar untuk ini, dan di mana saya akan meletakkannya? Oke saya menjawab pertanyaan saya di sana, maaf haha. Saya perlu menggunakanonKeyPressed
pada objek induk di file FXML. - person Lukas   schedule 17.04.2021