Exception in Application start method JAVA FX

Sou novo em java fx e estudando uma apostila da Casa do Código , me deparei com este erro.

Olá, posta o código completo para poder te ajudar, mas me parece que seu btSair está nulo.

`
import javax.swing.JOptionPane;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class LoginApp extends Application {

private AnchorPane pane;
private TextField txLogin;
private PasswordField txSenha;
private Button btEntrar, btSair;
private static Stage stage;

@Override
public void start(Stage stage) throws Exception {

	initComponetes();
	initListeners();
	Scene scene = new Scene(pane);
	stage.setScene(scene);
	// Remove a opção de maximizar a tela
	stage.setResizable(false);
	// Dá um título para a tela
	stage.setTitle("Login - GolFX");
	stage.show();
	initLayout();

	LoginApp.stage = stage;

}

private void initComponetes() {
	pane = new AnchorPane();
	pane.setPrefSize(400, 300);

	TextField txLogin = new TextField();
	txLogin.setPromptText("Digite aqui o seu login");

	PasswordField txSenha = new PasswordField();
	txSenha.setPromptText("Digite sua senha");

	Button btEntrar = new Button("Entrar");
	Button btSair = new Button("Sair");

	pane.getChildren().addAll(txLogin, txSenha, btEntrar, btSair);

}

public void initLayout() {
	// Calculo para centralizar os componetes no centro da tela
	txLogin.setLayoutX((pane.getWidth() - txLogin.getWidth()) / 2);
	txLogin.setLayoutY(50);
	txSenha.setLayoutX((pane.getWidth() - txSenha.getWidth()) / 2);
	txSenha.setLayoutY(100);
	btEntrar.setLayoutX((pane.getWidth() - btEntrar.getWidth()) / 2);
	btEntrar.setLayoutY(150);
	btSair.setLayoutX((pane.getWidth() - btSair.getWidth()) / 2);
	btSair.setLayoutY(200);

	// CSS para melhorar o visual do menu principal
	pane.setStyle("-fx-background-color: linear-gradient(from 0% 0% to 100% 100%, blue 0%, silver 100%);");

}

private void fecharAplicacao() {
	System.exit(0);
}

public static Stage getStage() {
	return stage;
}

private void initListeners() {
	btSair.setOnAction(new EventHandler<ActionEvent>() {
		@Override
		public void handle(ActionEvent event) {
			fecharAplicacao();
		}
	});

	btEntrar.setOnAction(new EventHandler<ActionEvent>() {
		@Override
		public void handle(ActionEvent event) {
			logar();
		}
	});
}

private void logar() {
	if (txLogin.getText().equals("admin") && txSenha.getText().equals("casadocodigo")) {
		// TODO Abrir a tela VitrineApp
	} else {
		JOptionPane.showMessageDialog(null, "Login e/ou senha inválidos", "Erro", JOptionPane.ERROR_MESSAGE);
	}
}

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

}

`

@Julio_Si_Freitas, os botões estão sofrendo shadowing no initComponents. Mude o método initComponents para:

private void initComponetes() {
	pane = new AnchorPane();
	pane.setPrefSize(400, 300);

	txLogin = new TextField();
	txLogin.setPromptText("Digite aqui o seu login");

	txSenha = new PasswordField();
	txSenha.setPromptText("Digite sua senha");

	btEntrar = new Button("Entrar");
	btSair = new Button("Sair");

	pane.getChildren().addAll(txLogin, txSenha, btEntrar, btSair);

}

Abcs!

1 curtida

ia responder isso rs

1 curtida

Perfeito hlucasfranca, muito obrigado!

Valeu pela atenção Andrauss!

Blz, esse exemplo é do livro da casa do código certo? Futuramente indico usar o FXML tem um tutorial muito bom aqui.

2 curtidas