@bruno.daniel escreveu:
Bom dia galera,
Estou começando a estudar sobre JavaFx, procurando aprender através do livro da Casa do Código sobre esse assunto, porem logo nos exercicios iniciais já me deparei com a dificuldade de conseguir rodar uma aplicação, gostaria de pedir os amigos um apoio para descobrir o problema, segue o código abaixo:
`
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 { initComponents(); initLayout(); initListeners(); Scene scene = new Scene(pane); // para exibir o form é necessário criar uma cena add o form nele 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(); LoginApp.stage = stage; } public static Stage getStage() { return stage; } private void initComponents() { pane = new AnchorPane(); // criando um form pane.setPrefSize(400, 300); // Indica a largura e altura do painel principal. pane.setStyle("-fx-background-color: linear-gradient(from 0% 0% to 100% 100%, green 0%, silver 100%);"); // css no form // criando uma caixa de texto TextField txLogin = new TextField(); txLogin.setPromptText("Digite aqui seu login"); // criando uma caixa para senha PasswordField txSenha = new PasswordField(); txSenha.setPromptText("Digite aqui sua senha"); // dois botões Button btEntrar = new Button("Entrar"); Button btSair = new Button("Sair"); // add todos os componentes criados ao form pane.getChildren().addAll(txLogin, txSenha, btEntrar, btSair); } private void initLayout() { /* Posicionando os componentes no form */ // Node.getWidth() = Retorna a largura do componente. txLogin.setLayoutX((pane.getWidth() - txLogin.getWidth()) / 2); txLogin.setLayoutY(50); txSenha.setLayoutX((pane.getWidth() - txSenha.getWidth()) / 2); txSenha.setLayoutY(80); btEntrar.setLayoutX((pane.getWidth() - txSenha.getWidth()) / 2); btEntrar.setLayoutY(120); btSair.setLayoutX(180); btSair.setLayoutY(120); } private void initListeners() { //metodo indicará a ação do botão /* 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 fecharAplicacao() { System.exit(0); } private void logar() { if (txLogin.getText().equals("admin") && txSenha.getText().equals("casadocodigo")) { try { new VitrineApp().start(new Stage()); LoginApp.getStage().close(); } catch (Exception e) { e.printStackTrace(); } } else { JOptionPane.showMessageDialog(null, "Login e/ou senha inválidos", "Erro", JOptionPane.ERROR_MESSAGE); } } public static void main(String[] args) { launch(args); // vem da classe Application e faz com que o form possa ser exibido }
}
`
O erro que está ocorrendo ao executar a aplicação é o seguinte:
`
Exception in Application start method java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at LoginApp.initLayout(LoginApp.java:79) at LoginApp.start(LoginApp.java:26) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) ... 1 more
Exception running application LoginApp
`
Desde já agradeço por qualquer ajuda.
Mensagens: 2
Participantes: 2