Моя связь с JFrame на другой Jframe не работает - PullRequest
0 голосов
/ 03 июня 2019

Я хотел бы создать меню входа.После входа в систему должен появиться новый JFrame.Все JFrames были созданы с использованием GUI Builder (дизайн) Netbeans.По какой-то причине связь между первым JFrame и вторым не работает.Действительно, после того, как я нажимаю «Entra» на прежнем JFrame, он только удаляет и не появляется второй формы.Это «Первая» форма, которая содержит меню входа в систему

import java.awt.event.KeyEvent;
import java.sql.SQLException;


public class Login extends javax.swing.JFrame {

    boolean premutoLogin;

    //some stuff automatically generated...                                               

    private void entraButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
        eseguiLogin();
    }                                           


    private void eseguiLogin(){
        Database.schema = Database.user = usernameTextField.getText();
        Database.password = new String(passwordField.getPassword());
        try{
            Database.setDefaultConnection(Database.connetti());
            premutoLogin = true;
            dispose();
        } catch(SQLException exc){
            PrincipaleCF.mostraErroriSwing(this, exc);
        }
    }


}

Прежний JFrame должен ссылаться на этот JFrame:

import java.awt.Color;
import java.sql.*;
import javax.swing.JOptionPane;

public class PrincipaleCF extends javax.swing.JFrame {
    /**
     * Creates new form PrincipaleCF
     */
    public PrincipaleCF() {
        initComponents();
        Login login = new Login(this, true);
        login.setVisible(true);
        if(!login.premutoLogin)
            dispose();
        else
            mostraDefault();            
    }

    private void mostraDefault(){
        setVisible(true);
        this.getRootPane().setDefaultButton(checkButton);
    }

    //edit by the gui builder          

    private void esciButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try{
            Database.getDefaultConnection().close();
        } catch(SQLException exc){
            mostraErroriSwing(this, exc);
        }
        dispose();
    }                                          

    private void checkButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
        eseguiControllo();
    }                                           


    public static void mostraErroriSwing(java.awt.Component thrower, SQLException e){
        //my definition...
    }

    //psv main generated automatically

        /* Create and display the form */
       //...


}

По какой-то причине он компилируется и запускается безпроблема.Но когда я нажимаю «Entra» в предыдущей форме, он только удаляет, но не ссылается на второй фрейм.

Ответы [ 3 ]

0 голосов
/ 03 июня 2019

Для начала я бы посоветовал вам импортировать ваши классы вместо того, чтобы иметь такие вещи, как

public class PrincipaleCF extends javax.swing.JFrame {

но

import javax.swing.JFrame;

public class PrincipaleCF extends JFrame {

Чтобы решить вашу проблему с фреймом, вам просто нужно вызвать функцию, которая откроет ваше второе окно, так как оно закрывает первое, что-то вроде

private void eseguiLogin(){
    Database.schema = Database.user = usernameTextField.getText();
    Database.password = new String(passwordField.getPassword());
    try{
        Database.setDefaultConnection(Database.connetti());
        premutoLogin = true;
        dispose();

        //this
        PrincipaleCF secondFrame = new PrincipaleCF();
    } catch(SQLException exc){
        PrincipaleCF.mostraErroriSwing(this, exc);
    }
}

0 голосов
/ 03 июня 2019

и добро пожаловать в StackOverflow.Просто дай мне понять это правильно.Вы хотите показать PrincipaleCF, пока этот блок try-catch завершается успешно:

try{
        Database.setDefaultConnection(Database.connetti());
        premutoLogin = true;
        dispose();
    } catch(SQLException exc){
        PrincipaleCF.mostraErroriSwing(this, exc);
    } 

Поэтому для этого вам нужно создать набор JFrame PrincipaleCF, прежде чем избавиться от Jframe входа в систему.Таким образом, ваш блок try будет выглядеть так:

try{
        Database.setDefaultConnection(Database.connetti());
        premutoLogin = true;
        PrincipaleCF pcf = new PrincipaleCF();
        // If that not succeed try calling pcf.mostraDefault();
        dispose();
    } catch(SQLException exc){
        PrincipaleCF.mostraErroriSwing(this, exc);
    } 
0 голосов
/ 03 июня 2019

Вы вызываете статический метод eseguiLogin(), но вы не создаете новый экземпляр.Итак, попробуйте это:


private void eseguiLogin(){
        Database.schema = Database.user = usernameTextField.getText();
        Database.password = new String(passwordField.getPassword());
        try{
            Database.setDefaultConnection(Database.connetti());
            premutoLogin = true;
            dispose();
        } catch(SQLException exc){

            PrincipaleCF cf =new PrincipaleCF (); //Creates new instance
            cf.mostraErroriSwing(this, exc); //Calls static method
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...