Abrir uma nova tela ao clicar em um button java fx

eu criei esse metodo e como eu conseguiria abrir uma nova tela nesse if:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javafxapplication3;

import static com.sun.deploy.uitoolkit.ToolkitStore.dispose;
import java.net.URL;
import java.sql.SQLException;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import semeqAplication.ConnectionFactory;

/**
 *
 * @author user
 */
public class FXMLDocumentController implements Initializable {
    
    @FXML
    private Label jLogin;
    private Label Jsenha;
    
    @FXML
    private void validar(ActionEvent event) {
        validaLogin();
    }
    public void validaLogin(){
        try {
            ConnectionFactory conn = new ConnectionFactory();
            conn.getConnection();
            
            String sql = "SELECT login,senha FROM usuario where login = '" + jLogin.getText() + "' and  senha = '" + Jsenha.getText() + "'";
            conn.executeSQL(sql);

            //Se houver resultado, ou seja, se validar o usuario e senha, faça algo.
            if (conn.resultset.next()) {

            } else {
                System.out.println("Acesso negado.");
            }
        }catch(SQLException e){
            System.out.println("Erro: "+e);
        }
    }
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
    
}

como eu abria um nova tela nesse if ou criando um metodo
//Se houver resultado, ou seja, se validar o usuario e senha, faça algo.
if (conn.resultset.next()) {

Especifique por gentileza o que você está querendo fazer. :thinking:

acabei perdendo essa conta
bom o meu objetivo é abrir uma nova tela ao clicar no button ( depois de validar login e senha ir para uma nova tela.)
no java seria
if (conn.resultset.next()) {
setVisable …
}, mas no javax eu não tenho ideia.

Teste.

new suaTela().setVisible(true);

O código abaixo tbm funcionaria, mas já foi depreciado (deprecated)

new suaTela().show();

(Alguém me corrija se eu estiver errado.)

Creio que você está chamando o result set errado. ResultSet é uma interface que não tem a ver com a sua classe connection.

Primeiramente, crie uma variável do tipo ResultSet:

ResultSet rs;

// Vem seus metodos etc etc etc

Dai sim vem o if:

if (!rs.wasNull()) { // etc etc etc

Não funcionou no javafx .

opa man o metodo funciona normalmente o meu único problema é abrir uma nova tela no java fx no java funciona normalmente.

Sim,

Olha esse exemplo que acabei de fazer chamando minha outra tela: NewJFrame e funcionou de boa.

package teste2;

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

public class Teste2 extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Abrit tela.");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
                new NewJFrame().setVisible(true);
            }
        });
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        
        Scene scene = new Scene(root, 300, 250);
        
        primaryStage.setTitle("Abrir GTela.");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

Opa mano eu consegui, mas estou com um problema no xml do button

<Button fx:id="entrar" layoutX="429.0" layoutY="335.0" mnemonicParsing="false" onAction="#validar" prefHeight="25.0" prefWidth="200.0" styleClass="btn1" stylesheets="@style.css" text="Entrar" />

no onAction está falando que o controlador não está definido no componente raiz
mesmo eu colocando o metodo no Document Controller

private void validar(ActionEvent event) {
    validaLogin();
}

Se você for chamar a tela de outro FXML

FXMLLoader fxml = new FXMLLoader(getClass().getResource(“tela.fxml”));
Parent parent = (Parent)fxml.load();

Scene mscene = new Scene(parent, 1300, 750 );

Stage nstage.setScene(mscene);
nstage.show();

Bons Codigos

1 curtida