• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java FXML - Jak wygasić jedną scenę aby włączyć drugą

Object Storage Arubacloud
0 głosów
292 wizyt
pytanie zadane 22 maja 2020 w Java przez Mirosław Ziobro Nowicjusz (180 p.)

Mam taki plik:

package Controllers;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javafx.stage.Screen;
import javafx.stage.Stage;
import javafx.application.Application;


public class PanelLogowaniaController {

    @FXML
    ImageView logo_wup = new ImageView();
    @FXML
    Label labelLogin = new Label();
    @FXML
    Label labelPass = new Label();

    @FXML
    TextField loginField = new TextField();
    @FXML
    PasswordField passField = new PasswordField();
    @FXML
    Button zalogujButton = new Button();
    @FXML
    Text komunikat = new Text("");
    @FXML
   public Pane panelLogowania = new Pane();


    public Pane programMain = new Pane();

   public Stage stage = new Stage();


   // TabPane mainWindowsProgram = new TabPane();


    public PanelLogowaniaController() {


    }


    @FXML
    public void btnZalogujPanelLogowania(){


        Connection connection = null;

        if (loginField.getText()==null) {

            loginField.setText("login");

        }

        if (passField.getText()==null) {

            passField.setText("password");

        }

        try{
                int dbConnectionMetod = 1;

            switch(dbConnectionMetod){

                case 1:

                    //ładowanie sterownika jdbc
                    Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
                    //   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                    connection =
                            DriverManager.getConnection("jdbc:ucanaccess://C:\\WUP\\MojaAplikacja\\mojaAplikacja.accdb");
                    // connection = DriverManager.getConnection("jdbc:ucanaccess://C:\\MojaAplikacja\\mojaAplikacja" +
                    //   ".accdb");


                    break;

                case 2:

                    //ładowanie sterownika jdbc
                    Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
                    //   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                    connection =
                            DriverManager.getConnection("jdbc:ucanaccess://C:\\WUP\\MojaAplikacja\\mojaAplikacja.accdb");
                    // connection = DriverManager.getConnection("jdbc:ucanaccess://C:\\MojaAplikacja\\mojaAplikacja" +
                    //   ".accdb");


                    break;

            }


            Statement statement = connection.createStatement();
            ResultSet resultSet =
                    statement.executeQuery("SELECT * FROM users WHERE login='"+loginField.getText()+"' AND " +
                            "password='"+passField.getText()+"' AND status=1 LIMIT 1");
            resultSet.next();
            String login = resultSet.getString("login");
            String password = resultSet.getString("password");
            String uzytkownik = resultSet.getString("imie")+" "+resultSet.getString("nazwisko");

            //   System.out.println(login);
            //   System.out.println(password);
            //    System.out.println(uzytkownik);
            resultSet.close();



            if (loginField.getText().equals(login) & passField.getText().equals(password)) {




                //  programTabsDlaWupController.ustawLoginZalogowanego(uzytkownik);

                logowanieDisabled();

                 // ukrywanie panelu logowania

               // komunikat.setText("Zalogowałeś się");


                FXMLLoader loader = new FXMLLoader();
                loader.setLocation(this.getClass().getResource("/fxmls/ProgramUserDetale.fxml"));


                programMain = loader.load();

                Scene scenePrigram = new Scene(programMain);


                stage.setTitle("Program główny");
                stage.setScene(scenePrigram);
                stage.show();










            } else
            {

                komunikat.setText("Wpisałeś niepoprawne dane logowania. Spróbuj ponownie!!!");

            }


        }catch (Exception e){

            // System.out.println("Blad polaczenia z baza "+ e);
            //  String ex = e.printStackTrace();
            //  System.out.println(e); e.printStackTrace();
            komunikat.setText("Wpisałeś niepoprawne dane logowania. Spróbuj ponownie!!! 22");


        }


    }

    public void Initialize(){

        Pane panelLogowania = new Pane();
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(this.getClass().getResource("/fxmls/PanelLogowania.fxml"));

        try {
            panelLogowania = loader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }

        Scene scene = new Scene(panelLogowania,454,353);

        stage.setTitle("Logowanie");
        stage.setScene(scene);
        stage.show();


    }

        public void logowanieDisabled(){
        panelLogowania.setVisible(false);

        }
}

W momencie uruchamiania programu z class Main 

PanelLogowaniaController panelLogowaniaController = new PanelLogowaniaController();
        panelLogowaniaController.Initialize();

program nie wygasza mi FXML-a PanelLogowania.fxml  tylko uruchamia dodatkową formatkę ProgramUserDetale.fxml.

Wcześniej jak miałem napisane to w kodzie JavyFX to działało teraz nie działa mi polecenie 

panelLogowania.setVisible(false);

Gdzie robię błąd?

1 odpowiedź

0 głosów
odpowiedź 22 maja 2020 przez mbabane Szeryf (79,280 p.)
if (loginField.getText().equals(login) & passField.getText().equals(password)) 

Czy na pewno powyższy if jest spełniony? Generalnie powinno być &&, aczkolwiek w tym przypadku niewiele to zmienia.

Zobacz co dokładnie robi metoda:

 stage.show();

Możliwe że ona leci po wszystkim co ma w sobie i robi:

setVisible(true);

Tak na logikę. Obiekt stage już raz miał wykonane show więc wydaje mi się, że kolejne wołanie stage.show() w if'e jest zbędne, bo ten stage to jest całe okno, a okna nie zamykasz/chowasz. Wyłączasz tylko jakiś komponent w tym oknie (na stage).

Podobne pytania

0 głosów
0 odpowiedzi 490 wizyt
pytanie zadane 25 października 2016 w Java przez K0XM4N Gaduła (3,640 p.)
0 głosów
1 odpowiedź 1,385 wizyt
pytanie zadane 25 stycznia 2018 w Java przez must Bywalec (2,980 p.)
0 głosów
1 odpowiedź 941 wizyt
pytanie zadane 21 czerwca 2016 w Java przez kaminki Obywatel (1,030 p.)

92,555 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,941 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...