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