Я программирую приложение JavaFX, и мне нужно получить все контроллеры (кнопки, текстовые поля и палитру цветов) из моего представления.
Итак, я создал класс контроллера для загрузки всех контроллеров:
public class GeneralController extends BorderPane implements Initializable {
@FXML private Button btnNew;
@FXML private Button btnOpen;
@FXML private Button btnSave;
@FXML private Button btnShare;
@FXML private Button btnHelp;
@FXML private Button btnAbout;
@FXML private ColorPicker clrSelectColor;
@FXML private Button btnPencil;
@FXML private Button btnArrow;
@FXML private Button btnCircle;
@FXML private Button btnLine;
@FXML private Button btnTriangle;
@FXML private Button btnRectangle;
@FXML private TextField nbcThickness;
@FXML private Button btnConfirmThickness;
@FXML private Button btnCropImg;
@FXML private Button btnRotateImg;
@FXML private Button btnInverseImg;
@FXML private Canvas paintCanvas;
private GraphicsContext gc;
public GeneralController() {
FXMLLoader fl = new FXMLLoader(getClass().getResource("/view/Window.fxml"));
fl.setController(this);
try {
fl.load();
} catch (IOException exception) {
throw new RuntimeException(exception);
}
}
Проблема в том, что после загрузки файла FXML все ссылки на мои контроллеры становятся нулевыми (конечно, из-за того, что контроллеры находятся во вложенных панелях).
Дерево файлов FXML находится здесь:
![file tree](https://i.imgur.com/cGJPi9V.png)
(Весь файл FXML: https://pastedb.io/paste/283be582-8624-4e13-71f8-838d6cbe15a7#fd3bdf271781a16f773b539ca30478f92ef7c8a9b228e7d630ee48c7eaf72a5f)
Как я могу загрузить все свои контроллеры (кроме панелей) без необходимости проходить через каждый вложенный контейнер? (Каждый контроллер имеет уникальный идентификатор для всего приложения).