0

現在、私は 2 つJFrameの s を作成しました。1 つJFrameログイン認証用で、もう 1 つはメイン メニューです。問題は、プログラムをコンパイルして実行すると、出力がなく、画面が空白になることです。NetBeansコンパイラは実行中であることを示しますが、何も表示されません。

これが私がやったことです:これはログインフレームコードです。

public class Login_screen extends javax.swing.JFrame {

    /**
     * Creates new form Login_screen
     */
    public Login_screen() {
        initComponents();
        this.getContentPane().setBackground(new Color(0,176,80)); //changed the background colour of the frame
    }

    JFrame frame=new JFrame();

    Main_Menu_screen openscreen=new Main_Menu_screen();
    createLogin_class createAccount=new createLogin_class();

    private void btnloginActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try{
            libraryLogin_class loginObject=new libraryLogin_class();
            createAccount.login();
            String username=txtusername.getText();
            String password=new String(txtpassword.getPassword());

            FileInputStream file=new FileInputStream("login.txt");
            ObjectInputStream readFile=new ObjectInputStream(file);

            loginObject=(libraryLogin_class)readFile.readObject();

            readFile.close();
            if(loginObject.getUsername().equals(username) && 
                    loginObject.getPassword().equals(password)){

                JOptionPane.showMessageDialog(frame,"Login Successful");
                this.setVisible(false);
                openscreen.setVisible(true);
            }
            else
            {
                JOptionPane.showMessageDialog(frame,"Username/Password Incorrect!");
            }
        }catch(Exception e){}
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Login_screen().setVisible(true);
            }
        });
    }
}

これらは、ログイン フレームに関連付けられる 2 つの別個のクラスです。

public class createLogin_class {

    /**
     * Below method creates a login with the given 
     * username and password and passes  them to createLogin method
     */

    public void login(){

        String username="shehan";
        String password="123";

        createLogin_class user=new createLogin_class();
        user.createLogin(username, password);
    }

    /**
     * This method calls the constructor of libraryLogin class 
     * and pass the parameters to create an object, 
     * after the object is created it is written in to a file.
     * @param username
     * @param password 
     */
    public void createLogin(String username,String password){

        libraryLogin_class logins=new libraryLogin_class(username,password);

        try{
            FileOutputStream write=new FileOutputStream("login.txt");
            ObjectOutputStream writeTofile=new ObjectOutputStream(write);

            writeTofile.writeObject(logins);
            writeTofile.flush();
            writeTofile.close();
        }catch(Exception e){}
    }
}

他のクラス:

public class libraryLogin_class implements Serializable {

    private String username;
    private String password;

    public libraryLogin_class(){}

    public libraryLogin_class(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}
4

1 に答える 1

0

私は自分で問題を見つけることができました。この問題は、再帰が原因で発生しました。コンストラクターが自分自身を呼び出していたので、変更するとプログラムが動作し始めました。

于 2013-08-04T14:27:27.093 に答える