Внедрение не удается в javafx (NullPointerException) - PullRequest
0 голосов
/ 03 марта 2020

Объекты в 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");
    }
}
...