1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Erro ao chamar telas Java Fx no Spring

Discussion in 'Technology' started by cloud Andrade, Oct 8, 2018.

  1. Estou desenvolvendo uma aplicação spring + Java Fx, ao chamar o código pela tela da classe principal, ela funciona normalmente, porém se eu chamar outra tela, ela não grava as informações no model e dá null pointer exception, já tentei mudar a forma como gerencio as telas e não funcionou, continua dando o mesmo erro... alguem poderia me ajudar?

    esse é o código da classe principal, onde está funcionando normalmente:

    @SpringBootApplication(scanBasePackages = { "br.com.cron.folhapagamento.service",
    "br.com.folhapagamento.controller", "br.com.folhapagamento.main" })
    @EntityScan(basePackages = { "br.com.folhapagamento.model" })
    @EnableJpaRepositories(basePackages = { "br.com.folhapagamento.repository" })

    public class FolhaDePagamentoApplication extends Application {
    private static final Logger log =
    LoggerFactory.getLogger(FolhaDePagamentoApplication.class);

    private ConfigurableApplicationContext context;

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

    @Override
    public void init() throws Exception {
    super.init();
    SpringApplicationBuilder builder = new SpringApplicationBuilder(FolhaDePagamentoApplication.class);
    context = builder.run(getParameters().getRaw().toArray(new String[0]));

    }

    @Override
    public void start(Stage primaryStage) throws Exception {
    log.info("Starting...");

    FXMLLoader loader = new
    FXMLLoader(getClass().getResource("../view/LeiAutorizativa.fxml"));
    loader.setControllerFactory(context::getBean);
    Parent root = loader.load();
    Scene scene = new Scene(root);

    scene.getStylesheets().add(getClass()
    .getResource("stylesheet.css").toExternalForm());
    primaryStage.setScene(scene);
    primaryStage.setTitle("TableView App");
    primaryStage.show();

    }
    }


    e aqui a classe que eu gerencio as telas, e é o modo que não está funcionando, queria q funcionasse normal:

    private static AplicacaoUtil instancia = null;

    private Stage telaAtual = null;


    private AplicacaoUtil() {
    this.telaAtual = new Stage();
    }

    public static AplicacaoUtil getInstancia()
    {
    if(instancia == null){
    instancia = new AplicacaoUtil();
    }
    return instancia;
    }

    public void irParaTela(String nomeTela) {
    try {
    System.out.println("Carrega o arquivo da tela desejada");
    Parent root = FXMLLoader.load(getClass().getResource("../view/".concat(nomeTela)));

    System.out.println("Cria uma nova cena para a tela e adiciona no palco (telaAtual)");
    Scene scene = new Scene(root);
    this.telaAtual.setScene(scene);

    System.out.println("Exibe o palco caso o mesmo não esteja sendo exibido");
    if(!this.telaAtual.isShowing()){
    this.telaAtual.show();
    }
    }catch(Exception e){
    System.out.println("entrou no catch");
    System.err.println("Ocorreu um erro ao tentar navegar para tela: ".concat(nomeTela).concat(" ".concat(e.getMessage())));
    //exibe uma mensagem caso a tela não tenha sido encontrada + erro original
    }
    }


    public void setTelaAtual(Stage telaAtual) {
    this.telaAtual = telaAtual;
    }

    public Stage getTelaAtual() {
    return telaAtual;
    }


    ela gerencia as telas por meio de um singleton, e para chamar as telas eu chamo o método irParaTela e passo a string q será o nome da tela, ela chama, porém ao mandar salvar as informações no banco ela dá erro.

    porfavor galera, me dá uma luz aí! vlw

    Login To add answer/comment
     

Share This Page