Como faço para clicar em um botão e abrir uma nova tela?

Como faço para clicar em um botão e abrir uma nova tela?

Classe Login

package view;
	
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;


public class Login extends Application {
	@Override
	public void start(Stage stage) throws Exception {
		
		Parent root = FXMLLoader.load(getClass().getResource("Login.fxml"));
		
		Scene scene = new Scene(root, 400, 240);
		stage.setTitle("FXML Welcome");
        stage.setScene(scene);
        stage.show();
	}

Class LoginController

package controller;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import view.TelaPrincipal;

public class LoginController {
	
	@FXML private Text actiontarget;
	@FXML protected void handleSubmitButtonAction(ActionEvent event) throws Exception {
		 // actiontarget.setText("Botão Pressionado");
		
		Stage stage = null;
		new TelaPrincipal().start(stage);
		
		  
	}	

}


Class TelaPrincipal

package view;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class TelaPrincipal extends Application {
	
	@Override
	public void start(Stage stage) throws Exception {
	Parent root = FXMLLoader.load(getClass().getResource("TelaPrincipal.fxml"));
	
	Scene scene = new Scene(root, 400, 240);
	stage.setScene(scene);
    stage.show();
	}

}

Na Class LoginController quando clico no botão na tela de Login gostaria que a tela de Login fechasse e abrisse a tela da Class TelaPrincipal.

Por que isso não acontece? Onde estou errando?

Obrigado a todos,
Jurandyr

Você copiou o codigo na verdade nao é? kkk acho incrivel você usar Stage e não saber dar um Frame.setVisible(true); ou Frame.dispose():

Somente copiei a Class Login, o restante do código é meu e estou aprendendo Java.

Esse é o erro que estou tento:

Caused by: java.lang.NullPointerException
at view.TelaPrincipal.start(TelaPrincipal.java:16)
at controller.LoginController.handleSubmitButtonAction(LoginController.java:18)
… 58 more

Pessoal fiz uma pequena alteração no código mais ainda não funciona:

package controller;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class LoginController {

@FXML protected void handleSubmitButtonAction(ActionEvent event) throws Exception {
	 		

		Stage stage = null;
		Parent root = FXMLLoader.load(getClass().getResource("TelaPrincipal.fxml"));
		Scene scene = new Scene(root, 400, 240);
		stage.setScene(scene);
		stage.show();
	
	
				  
}	

}

Consegui.

:smile:

package controller;

import java.io.IOException;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class LoginController {

@FXML protected void handleSubmitButtonAction(ActionEvent event) {
	
	try {
		
		Parent root = FXMLLoader.load(getClass().getResource("TelaPrincipal.fxml"));
		Stage stage = new Stage();
		Scene scene = new Scene(root, 400, 240);
		stage.setScene(scene);
		stage.show();
		
     	} catch (IOException e) {
            e.printStackTrace();
        }
	 		

		
	
	
				  
}	

}