Объекты в f xml не внедряются в контроллер, он генерирует исключение NullPointerException во время выполнения. Я проверил идентификаторы в файле f xml и классе контроллера java.
Я сделал это в F XML:
<?xml version = "1.0" encoding = "UTF-8"?>
<?import java.net.*?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.geometry.Insets?>
<HBox spacing = "10" alignment = "center" xmlns:fx = "http://javafx.com/fxml" fx:controller = "MainLayout">
<padding>
<Insets top = "10" right = "10" bottom = "10" left = "10"/>
</padding>
<children>
<Button fx:id = "dataButton" text = "Element" onAction = "#clicked"/>
<ComboBox fx:id = "elementsCombo"/>
</children>
</HBox>
И это в моем контроллер javafx:
import javafx.scene.layout.BorderPane;
import javafx.fxml.FXMLLoader;
import javafx.fxml.FXML;
import javafx.scene.layout.HBox;
import java.io.IOException;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Button;
import javafx.event.ActionEvent;
public class MainLayout extends BorderPane
{
HBox NavigationBar;
Button dataButton;
int counter = 0;
public void setLayout()
{
try
{
NavigationBar = FXMLLoader.load(getClass().getClassLoader().getResource("navbar.fxml"));
}
catch(IOException ex)
{
ex.printStackTrace();
}
setTop(NavigationBar);
}
public void clicked(ActionEvent e)
{
counter++;
dataButton.setText(counter + " clicks");
}
}