在JavaFX中引用另一个控制器中的控制器

时间:2018-04-07 22:20:51

标签: java javafx

我正在开发一个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来基本上制作控制器单例,然后将控制器注入我需要访问其他东西的其他控制器?

Application Screenshot with Controllers labeled

0 个答案:

没有答案