Есть три контроллера CategoryListController, DrawerContentController, PopupContentController; И есть еще главный контроллер MainXMLController каждый контроллер использует свой fxml файл для отрисовки но для всех контроллеров нужен инстанс MainXMLController'a Сейчас у меня в каждом контроллер есть такой метод getMainController
public MainXMLController getMainController(){
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/views/main.fxml"));
return (MainXMLController) fxmlLoader.getController(); }
Создал BaseController в него перенес метод getMainController и все три контроллера теперь наследуются с BaseController но когда вызываю getMainController например с CategoryListController получаю NullPointer. Что не так ?
public class BaseController {
protected MainXMLController mainXMLController;
public MainXMLController getMainXMLController() {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/views/main.xml.fxml"));
return fxmlLoader.getController();
}
}
public class CategoryListController extends BaseController implements Initializable {
@FXML
private JFXListView<CategoryModel> categoryList;
private CategoryModel categoryModel = new CategoryModel();;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
renderCategoryList(categoryModel.getAllCategory());
setEventListnerListvView();
}
private void setEventListnerListvView(){
EventHandler<MouseEvent> handler = mouseEvent -> {
CategoryModel selectedItem = categoryList.getSelectionModel().getSelectedItem();
if (selectedItem != null) {
System.out.println("id = " + selectedItem.getId());
//initMainController();
if(getMainController() != null){
getMainController().setTypeItText(selectedItem.getCategoryName());
} else {
System.out.println("Ctrl is null");
}
} else {
System.out.println("no item selected");
}
};
categoryList.addEventFilter(MouseEvent.MOUSE_CLICKED, handler);
}
private void renderCategoryList(ResultSet resultSet){
categoryList.setCellFactory(lv -> new LVCellViewHolder<>(){
@Override
protected void updateItem(CategoryModel item, boolean empty) {
super.updateItem(item, empty);
setText(empty || item == null ? "" : item.getCategoryName());
}
});
ObservableList categoryListRow = FXCollections.observableArrayList();
try {
while (resultSet.next()) {
categoryListRow.add(new CategoryModel(resultSet.getInt("id"), resultSet.getString("category_name")));
}
}catch (Exception e){
e.printStackTrace();
}
categoryList.setItems(categoryListRow);
}
public Node getView(){
return categoryList;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
Как в log4jxml изменять название файла, куда будут сохраняться логи, во время программы?
Цель: Правильно прописать путь в applicationproperties для возможности отправки данных в базу данных MS SQL
Есть таблица в которой есть номер лота и ценаУсловие: нужно собрать цену из той строки таблицы где есть номер ЕИС