Проблема в том, что обычные контроллеры JavaFX не должны рассматриваться как единичные экземпляры (потому что это не так). Все, что связано с @FXML, будет только INJECT в контроллер, после загрузки FXML
, поэтому ваш вызов «new Controller2»
public class controller2{
@FXML
TableView table;
// Will be null without loading of a fxml
public void testFunc() {
table.setPrefHeight(720);
}
}
Следовательно, исключение Nullpointer.
после инициализации, вы должны внедрить инициализированный контроллер загрузчиком FXML.
//Initialize a loader FOR the fxml with the ressource as Constructor parameter
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("fxml2.fxml"));
// then load!
AnchorPane root = fxmlLoader.load();
//Inject the Controller!
controller2= (Controller2) fxmlLoader.getController();
// in that order.
тогда инициализированный контроллер fxml должен быть правильным экземпляром.