Использование класса в качестве контроллера и создание - это использование элемента с тем же именем, что и у класса. Это разные вещи.
В вашем случае вы предполагаете, что экземпляр Controller
используется в качестве экземпляра контроллера:
Экземпляр CustomerPane
создан, но, поскольку он не является контроллером, поле customerTable
этого объекта не является целевым объектом, в который можно внедрить.
Вы должны попытаться использовать Пользовательский компонент подход:
<?import vm.CustomerPane?>
<fx:root type="vm.CustomerPane" layoutX="316.0" prefHeight="654.0" prefWidth="536.0" style="-fx-background-color: #7C8184;" xmlns:fx="http://javafx.com/fxml/1">
<children>
<TableView fx:id="customerTable" editable="true" prefHeight="200.0" prefWidth="461.0" GridPane.columnSpan="2" GridPane.rowIndex="1">
</TableView>
</children>
</fx:root>
public class CustomerPane extends GridPane {
@FXML
private TableView<Customer> customerTable;
public CustomerPane() {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxmlpackage/fxmlName.fxml"));
loader.setRoot(this);
loader.setController(this);
try {
loader.load();
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
System.out.println(this.customerTable);
}
}
Это позволяет вам использовать new CustomerPane()
для создания экземпляра или, альтернативно, использовать элемент <CustomerPane>
для создания его внутри fxml
<CustomerPane/>