我正在开发一个JavaFX应用程序,我决定将我的fxml文件/控制器分开,以便稍微分散一下。我有4个主要的fxml文件/控制器,然后将它们包含在主fxml文件中并放入边框窗格(4个部分在下面的图像链接中编号并以红色标出)。但是,我想引用其他控制器中的控制器。到目前为止,我一直在使用static关键字。但是,我对这个解决方案并不满意,并且想知道是否有更清洁的方法来做到这一点。这是我迄今为止如何完成此事的片段:
位于文件浏览器控制器
@FXML
private void handleImportButtonAction(ActionEvent event) {
importCount = 0;
// Pushes the import songs task to run on the background instead of the UI Thread
Runnable importTask = new Runnable() {
@Override
public void run() {
List<Song> importSongsList = new ArrayList<>();
importSongsList = importFilesForImportButton(fileBrowser.getSelectionModel().getSelectedItems(), importSongsList);
SongDisplayWindowController.getWindowDisplaySongs().addAll(importSongsList);
//TODO: Log this to the console window and display an files that couldn't be imported
System.out.println("You succesfully imported " + importCount + " files!");
}
};
new Thread(importTask).start();
}
位于歌曲显示窗口控制器
中public class SongDisplayWindowController implements Initializable{
private static ObservableList<Song> windowDisplaySongs;
public static ObservableList<Song> getWindowDisplaySongs() {
return windowDisplaySongs;
}
}
我是否可以使用基于Spring的DI来基本上制作控制器单例,然后将控制器注入我需要访问其他东西的其他控制器?