我一遍又一遍地试过这个嵌套控制器的东西,它只是不起作用'我'。 我不知道为什么我能得到一些像这样容易的东西。我按照这个例子
<VBox fx:controller="com.foo.MainController">
<fx:include fx:id="dialog" source="dialog.fxml"/>
...
</VBox>
public class MainController extends Controller {
@FXML private Window dialog;
@FXML private DialogController dialogController;
...
}
这是我的代码: app.Main.fxml
<AnchorPane prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml" fx:controller="app.MainController">
<children>
<Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
<Label layoutX="126" layoutY="120" minHeight="16" minWidth="69" fx:id="label" />
<fx:include source="InnerFile.fxml" fx:id="innerfile"/>
</children>
</AnchorPane>
app.MainController.java
public class MainController {
@FXML
private Label label;
@FXML
private Button button;
@FXML
private InnerFileController controller;
@FXML
private void handleButtonAction(ActionEvent event) {
System.out.println("You clicked me!");
label.setText("Hello World!");
}
public void initialize() {
controller.here();
}
}
我正在调用嵌套控制器'controller.here(); “ 并得到nullpointerexecption。 我不知道做错了什么。请帮帮我吧。
答案 0 :(得分:5)
InnerFileController的变量名称不正确。你有:
@FXML private InnerFileController controller;
但应该是:
@FXML private InnerFileController innerfileController;
这是因为包含文件的控制器的变量名称始终是fx:id值,其中&#34; Controller&#34;加上它。