Problème fermeture d'une Jframe Java

Résolu/Fermé
L3arning_ Messages postés 6 Date d'inscription jeudi 29 décembre 2022 Statut Membre Dernière intervention 7 janvier 2023 - 29 déc. 2022 à 21:50
L3arning_ Messages postés 6 Date d'inscription jeudi 29 décembre 2022 Statut Membre Dernière intervention 7 janvier 2023 - 2 janv. 2023 à 12:37

Bonjour;

je vais expliquer mon problème rapidement et simplement. J'ai codé une fenêtre "Log in" pour se connecter avec le pseudo Player et le mot de passe "2023" le problème c'est qu'une fois que je clique sur le bouton "Log in" je souhaite fermer cette fenêtre pour en ouvrir une autre dans laquelle je vais mettre un jeu de cartes.

Merci d'avance pour votre aide.

La classe Main :

package GUI_Package_1;

public class Main {
    public static void main(String[] args){
        Frame Frame_1 = new Frame("Log in",370, 200);
    }
}

La classe Frame :

package GUI_Package_1;

import javax.swing.*;

public class Frame extends JFrame{
    public Frame(String title, int width, int height){
        setTitle(title);
        setSize(width,height);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);

        add(new Panel_1());
    }
}

 La classe Panel_1 : 

package GUI_Package_1;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Panel_1 extends JPanel{

    JLabel username;
    JTextField textField;
    JLabel password;
    JPasswordField passwordField;
    JButton log_in;
    String user;
    String pass;


    public Panel_1(){

        username = new JLabel("Username :");
        add(username);
        textField = new JTextField(20);
        add(textField);
        password = new JLabel("Password :");
        add(password);
        passwordField = new JPasswordField(20);
        add(passwordField);
        log_in = new JButton("Log in");
        log_in.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               user = textField.getText();
               pass = passwordField.getText();
               if(user.equals("Player") && pass.equals("2023")){
                   JLabel success = new JLabel("Success");
                   add(success);
                }
               else{
                   JLabel fail = new JLabel("Fail");
                   add(fail);
                }
            }
        });
        add(log_in);
    }
}
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
30 déc. 2022 à 10:41

Bonjour,

Tu te compliques la vie à vouloir faire ta propre JFrame alors qu'il existe des méthodes dans JOptionPane qui permettent de faire des interactions avec l'utilisateur.

Voir : How to Make Dialogs (The Java™ Tutorials)

Exemple :

showConfirmDialog + OK_CANCEL_OPTION + QUESTION_MESSAGE
showMessageDialog + INFORMATION_MESSAGE
showMessageDialog + ERROR_MESSAGE
import javax.swing.*;
import java.awt.*;
import java.util.Map;

public class Main {
    private static final Map<String, String> CREDENTIALS = Map.of(
            "Player", "2023"
    );

    public static String[] readCredentials() {
        JTextField username = new JTextField();
        JTextField password = new JPasswordField();

        JPanel loginPanel = new JPanel();
        loginPanel.setLayout(new GridLayout(2, 2));
        loginPanel.add(new JLabel("Username:"));
        loginPanel.add(username);
        loginPanel.add(new JLabel("Password:"));
        loginPanel.add(password);

        JOptionPane.showConfirmDialog(null, loginPanel, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
        return new String[]{username.getText(), password.getText()};
    }

    public static String checkCredentials(String[] credentials) {
        String username = credentials[0];
        String password = credentials[1];
        String expectedPassword = CREDENTIALS.get(username);
        if (expectedPassword == null) {
            JOptionPane.showMessageDialog(null, "Wrong username !", "Login", JOptionPane.ERROR_MESSAGE);
            return null;
        }
        if (!expectedPassword.equals(password)) {
            JOptionPane.showMessageDialog(null, "Wrong password !", "Login", JOptionPane.ERROR_MESSAGE);
            return null;
        }
        JOptionPane.showMessageDialog(null, "Welcome " + username + "!", "Login", JOptionPane.INFORMATION_MESSAGE);
        return username;
    }

    public static void main(String[] args) {
        String[] credentials = readCredentials();
        String username = checkCredentials(credentials);
        if (username == null) {
            return; // stop
        } else {
            // ... la suite du programme
        }
    }
}

1
L3arning_ Messages postés 6 Date d'inscription jeudi 29 décembre 2022 Statut Membre Dernière intervention 7 janvier 2023
2 janv. 2023 à 12:37

Merci !

0