My view of javafx does not raise from the netbeans side

0

I am creating a project from Netbeans, javaFx and SQLServer. My problem is that I created a view from the side of javaFx and then I did the configurations (Add Controller, Identify the objects and assign the events), but when I run the Netbeans project I open the main window but the Sizes window does not

import javafx.fxml.Initializable;
import org.jhonylopez.sistema.Principal; 
import java.net.URL;
import java.util.ResourceBundle;

public class MenuPrincipalController implements Initializable{
    private Principal escenarioPrincipal;

    @Override
    public void initialize(URL url, ResourceBundle rb) {

    }

    public Principal getEscenarioPrincipal() {
        return escenarioPrincipal;
    }

    public void setEscenarioPrincipal(Principal escenarioPrincipal) {
        this.escenarioPrincipal = escenarioPrincipal;
    }

    public void ventanaCategoria(){
        escenarioPrincipal.ventanaCategorias();
    }

    public void ventanaMarca()
    {
        escenarioPrincipal.ventanaMarcas();
    }

    public void ventanaTalla()
    {
        escenarioPrincipal.ventanaTallas();
    }
}

Below is the code of the Main class

public class Principal extends Application {
    private final String PAQUETE_VISTA = "/org/jhonylopez/view/" ;
    private Stage escenarioPrincipal;
    private Scene escena;
    @Override

    public void start(Stage escenarioPrincipal) {
        this.escenarioPrincipal = escenarioPrincipal;
        escenarioPrincipal.setTitle("NextSport");
        menuPrincipal();
        escenarioPrincipal.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

    public void menuPrincipal(){
        try{
            MenuPrincipalController menuPrincipal = (MenuPrincipalController)cambiarEscena("MenuPrincipalView.fxml", 400, 400);
            menuPrincipal.setEscenarioPrincipal(this);
        }catch(Exception e){
            e.printStackTrace();
        }
    }


    public void ventanaCategorias()
    {
        try{
            CategoriaController categoriaController = (CategoriaController) cambiarEscena("CategoriaView.fxml", 600, 470);
            categoriaController.setEscenarioPrincipal(this);
        }catch(Exception e)
        {
            e.printStackTrace();
            e.getMessage();
        }
    }

    public void ventanaMarcas()
    {
        try{
            MarcaController marcaController = (MarcaController) cambiarEscena("MarcaView.fxml", 600, 470);
            marcaController.setEscenarioPrincipal(this);
        }catch(Exception e)
        {
            e.getMessage();
        }
    }

    public void ventanaTallas()
    {
        try
        {
            TallaController tallaController = (TallaController) cambiarEscena("TallaView", 600, 470);
            tallaController.setEscenarioPrincipal(this);
        }catch(Exception e)
        {
            e.getMessage();
        }
    }

    public Initializable cambiarEscena(String fxml, int ancho, int alto) throws Exception{
        Initializable resultado = null;
        FXMLLoader cargadorFXML = new FXMLLoader();
        InputStream archivo = Principal.class.getResourceAsStream(PAQUETE_VISTA + fxml);
        cargadorFXML.setBuilderFactory(new JavaFXBuilderFactory());
        cargadorFXML.setLocation(Principal.class.getResource(PAQUETE_VISTA));
        escena = new Scene((AnchorPane)cargadorFXML.load(archivo),ancho,alto);
        escenarioPrincipal.setScene(escena);
        escenarioPrincipal.sizeToScene();
        resultado = (Initializable) cargadorFXML.getController();
        return resultado;
    }

}

I did a test with a breakPoint but it does not go to the next line:

TallaController tallaController = (TallaController) cambiarEscena("TallaView", 600, 470);
        tallaController.setEscenarioPrincipal(this);
    
asked by Jhony López 25.04.2018 в 04:07
source

1 answer

0

The error occurs because the FXML file is not found in the JavaFX view. When you make this call

cambiarEscena("TallaView", 600, 470);

you still need to include the .fxml extension to the file name

cambiarEscena("TallaView.fxml", 600, 470);

Therefore, when this line of the cambiarEscene() method is executed,

InputStream archivo = Principal.class.getResourceAsStream(PAQUETE_VISTA + fxml);

returns null , and when trying to manipulate later the variable archivo a NullPointerException occurs

    
answered by 25.04.2018 / 04:47
source