0
当我尝试使用注入到我的主控制器的控制器时,我总是得到一个Nullpointer异常(widgetlinebelowtableController为空)。我看到这个答案,但并没有帮助:JavaFX controller injection does not workJavafx注入控制器为空
注入FXML:
<HBox fx:id="widgetLineBelowTable" maxWidth="Infinity" spacing="5.0" xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.widgets.WidgetLineBelowTableController">
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</padding>
<Label fx:id="warningLabel" text="Overflow"/>
</HBox>
控制器此FXML:
public class WidgetLineBelowTableController
{
@FXML
Label warningLabel;
public void setColor(int r, int g, int b) {
warningLabel.setTextFill(Color.rgb(r,g,b));
}
}
我主要FXML:
<VBox xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1" stylesheets="/sample/style.css" fx:controller="sample.mainController">
<fx:include source="/sample/menubar/MenuBar.fxml"/>
<TabPane>
<tabs>
<Tab closable="false" text="FirstTab">
<VBox>
<TitledPane collapsible="false">
<text>Results</text>
<fx:include source="table/Table.fxml"/>
</TitledPane>
<fx:include fx:id="widgetlinebelowtable" source="widgets/WidgetLineBelowTable.fxml" />
</VBox>
</Tab>
<Tab closable="false" text="SecondTab">
</Tab>
</tabs>
</TabPane>
</VBox>
主控制器:
import sample.widgets.WidgetLineBelowTableController;
public class mainController {
@FXML
private WidgetLineBelowTableController widgetlinebelowtableController;
public mainController() {
widgetlinebelowtableController.setColor(255,0,0);
}
}
感谢您的帮助。
谢谢你,我的坏 – Joey