【发布时间】:2019-09-23 09:54:06
【问题描述】:
我正在编写一个 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 文件树在这里:
如何加载我的所有控制器(窗格除外)而不必遍历每个嵌套容器? (每个控制器在所有应用程序上都有一个唯一的 ID)。
【问题讨论】:
-
请同时显示您的 FXML 文件
-
你也错过了 fl.setRoot(this);
-
我试过 fl.setRoot(this) 但我得到了错误“根值已指定”
标签: java javafx fxml scenebuilder