Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33090

JavaFX - Tela de login e fechar o Stage

$
0
0

@Chaybelucas escreveu:

Olá
Tenho uma aplicação em JavaFX que tem a tela de login e deve direcionar para a tela principal. Porém, quando valido o Login, a tela do login PERMANECE.

Tudo funciona corretamente, mas isso não. Como "fechar" o Stage sem fechar toda a aplicação?
Observação: já tentei usar o stage.close(); e o stage.hide();
Não funcionou.

Atualmente, estava tentando criar um Stage separado, por isso minha classe ficou estranha. Segue a classe

public class Main extends Application {
	Stage meuStage = new Stage(); // stage que chama o login
	Stage meuStage2 = new Stage(); // stage que chama a tela principal
    Constante c = new Constante();
DialogFX dialog = new DialogFX(); // criei isso, ignore.
boolean verificador = false;
@FXML TextField txtUsuario; // está vindo de um FXML
@FXML PasswordField txtSenha; // está vindo de um FXML

public void criarTela() { // Chama a tela de login
	try {
		Pane root = FXMLLoader.load(getClass().getResource("/view/Form_Login.fxml"));
		Scene scene = new Scene(root);
		meuStage.setTitle("Login");
		meuStage.setScene(scene);
		meuStage.show();
		
	} catch(Exception e) {
		JOptionPane.showMessageDialog(null, "Erro\n"+e.getMessage());
		
	}
	
}

@FXML
public boolean login() { // Verifica o login
	int cont = 0;
	try {
		Class.forName(c.DRIVER);
		Connection conn = DriverManager.getConnection(c.URL, c.USER, c.PASSWORD);
		Statement stm = conn.createStatement();
		
		ResultSet result = stm.executeQuery("SELECT COUNT(*) AS cont FROM B001 WHERE "
				+ "B001_USUARIO='"+txtUsuario.getText()+"' AND B001_SENHA=md5('"+txtSenha.getText()+"'); ");
		
		while(result.next()) {
			cont = result.getInt("cont");
			
		}
		
		if(cont == 1) {
                            // deve fechar o meuStage e abrir o meuStage2
			verificador = true ;
			meuStage.close(); // não vai

			Pane root = FXMLLoader.load(getClass().getResource("/view/Form_Principal.fxml"));
			Scene scene = new Scene(root);
			meuStage2.setMinHeight(500);
			meuStage2.setMinWidth(800);
			meuStage2.setScene(scene);
			meuStage2.show();

		} else if(cont > 1) {
			verificador = false ;
			dialog.showDialog("error", "Falha no login", "Registro duplicado", "Por favor, entre em contato com o suporte");
			
		} else if(cont <= 0) {
			verificador = false ;
			dialog.showDialog("error", "Falha no login", "Registro não encontrado", "Verifique suas credenciais!");
			
		}
		
	} catch (ClassNotFoundException e) {
		dialog.showDialog("error", "ClassNotFoundException", "Verifique o driver da conexão", e.getMessage());
		
	} catch (SQLException e) {
		dialog.showDialog("error", "SQLException", "Verifique a query da conexão", e.getMessage());

	} catch (Exception e) {
		dialog.showDialog("error", "Exception", "Entre em contato com o suporte", e.getMessage());

	}

	return verificador;

}

@Override
public void start(Stage primaryStage) throws Exception {
	Main main = new Main();
	main.criarTela();
	
}

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

Mensagens: 4

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 33090


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>