Je t'avoue que ton explication était pas super détaillée et pas super clair mais je pense avoir quelques solutions à te proposer.
Si le code ne convient pas à ce que tu veux faire, réeexplique la situation mais cette fois-ci avec des détails et ce que tu veux réaliser.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class UtilitaireSwing {
public static void main(String[] args) {
vbasic();
}
UtilitaireSwing() {
vbasic();
}
static JTextField nom = new JTextField("");
static JTextField prenom = new JTextField("");
static JButton logger = new JButton("Se logger");
static JButton enregister = new JButton("S'enregistrer");
private static void vbasic() {
//creation de la fenêtre principale
JFrame frame = new JFrame("vbasic");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//creation du conteneur
JPanel conteneur = new JPanel();
frame.add(conteneur);
conteneur.setLayout(new BoxLayout(conteneur, BoxLayout.PAGE_AXIS));
//creation du conteneur de champ et des boutton
JPanel champ = new JPanel();
conteneur.add(champ);
champ.setLayout(new BoxLayout(champ, BoxLayout.PAGE_AXIS));
JPanel boutton = new JPanel();
conteneur.add(boutton);
boutton.setLayout(new BoxLayout(boutton, BoxLayout.LINE_AXIS));
//creation des nom
JLabel labelnom = new JLabel("Nom");
JLabel labelprenom = new JLabel("Prenom");
//creation des entrée texte
nom.setColumns(10);
prenom.setColumns(10);
//creation des boutton
//ajout des element
champ.add(labelnom);
champ.add(nom);
champ.add(labelprenom);
champ.add(prenom);
boutton.add(logger);
boutton.add(enregister);
nom.addKeyListener(new KeyAdapter() {
// Ajoute d'un event pour les touches
public void keyReleased(KeyEvent e) {
verif();
}
});
// La même chose
prenom.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
verif();
}
});
logger.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (verifText()) {
JOptionPane.showMessageDialog(null, "Vous vous êtes connecteez");
}
}
});
//Taille et emplacement
frame.setSize(300, 200);
frame.setLocationRelativeTo(null);
//Visibilité de la fenetre
frame.setVisible(true);
}
// Deuxième solution plus conventionnel et le plus utilisé
public static boolean verifText() {
if (nom.getText().equals("") || prenom.getText().equals("")) {
JOptionPane.showMessageDialog(null, "Veuillez remplir les zones de texte");
return false;
} else {
return true;
}
}
// Première solution
public static void verif() {
// Chaque fois qu'une lettre/chiffre/etc sera rentré dans le JTextField
if (nom.getText().equals("") || prenom.getText().equals("")) {
// Rend inactif le bouton si nom est vide
logger.setEnabled(false);
} else {
// Réactive le bouton sinon
logger.setEnabled(true);
}
}
}
J'ai pas mal avancé. Mon problème actuellement est que les champ jtext ne se remplissent plus. J'ai bien mon événement qui agit sur mes boutons. Ça marche correctement comme attendu. malheureusement mon jtext reste vide mal-grès le fait que j'appuis sur les touche du clavier
j'ai un message d'erreur dans eclipse qui n’empêche pas de compiler :
Multiple markers at this line - The type Login must implement the inherited abstract method KeyListener.keyTyped(KeyEvent) - The type Login must implement the inherited abstract method KeyListener.keyPressed(KeyEvent)
package com.tp30.nfa035;
import java.awt.Color;
import javax.swing.*;
import java.awt.*;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import java.awt.event.*;
public class Login extends JFrame implements KeyListener {
private JFrame frame;
private JButton btnLogin, btnRegister;
private JTextField tfUsername;
private JPasswordField tfPassword;
private JLabel lblUsername, lblPassword;
private GridBagLayout gbl;
private GridBagConstraints gbc;
private String title = "nfa035_TP_30_Login";
private static int height = 400;
private static int left = 1100;
private static int top = 140;
private static int width = 200;
private static final long serialVersionUID = 1L;
public Login() {
frame = new JFrame(title);
btnLogin = new JButton("Se loguer");
btnRegister = new JButton("S'enregistrer");
tfUsername = new JTextField(15);
tfUsername.addKeyListener(this);
tfPassword = new JPasswordField(15);
tfPassword.addKeyListener(this);
lblUsername = new JLabel("Nom");
lblPassword = new JLabel("Mot de passe");
gbc = new GridBagConstraints();
gbl = new GridBagLayout();
frame.setLayout(gbl);
layoutComponents(0, 0, 1, 1, lblUsername, frame);
layoutComponents(0, 2, 1, 1, lblPassword, frame);
layoutComponents(0, 1, 3, 1, tfUsername, frame);
layoutComponents(0, 3, 3, 1, tfPassword, frame);
layoutComponents(1, 4, 1, 1, btnLogin, frame);
layoutComponents(2, 4, 1, 1, btnRegister, frame);
frame.setSize( height, width);
frame.setLocation(left, top);
frame.getContentPane().setBackground(Color.LIGHT_GRAY);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setAlwaysOnTop(true);
}
public void keyReleased(KeyEvent event) {
Object source = event.getSource();
if (source == tfUsername || source == tfPassword) {
if (tfUsername.getText().isEmpty() || tfPassword.getPassword().length==0) {
btnLogin.setEnabled(false);
}
else {
btnLogin.setEnabled(true);
}
if (tfUsername.getText().isEmpty() && tfPassword.getPassword().length==0) {
btnLogin.setVisible(false);
}
else {
btnLogin.setVisible(true);
}
}
}
private void layoutComponents(int x, int y, int width, int height, JComponent addThis, JFrame addTo) {
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.fill = GridBagConstraints.HORIZONTAL;
addTo.add(addThis, gbc);
}
}
Edit : j'ai réussi ! Voila mon code final :
package com.tp30.nfa035;
import java.awt.Color;
import javax.swing.*;
import java.awt.*;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import java.awt.event.*;
public class Login extends JFrame implements KeyListener {
private JFrame frame;
private JButton btnLogin, btnRegister;
private JTextField tfUsername;
private JPasswordField tfPassword;
private JLabel lblUsername, lblPassword;
private GridBagLayout gbl;
private GridBagConstraints gbc;
private String title = "nfa035_TP_30_Login";
private static int height = 400;
private static int left = 1100;
private static int top = 140;
private static int width = 200;
private static final long serialVersionUID = 1L;
public Login() {
frame = new JFrame(title);
btnLogin = new JButton("Se loguer");
btnRegister = new JButton("S'enregistrer");
tfUsername = new JTextField(15);
tfUsername.addKeyListener(this);
tfPassword = new JPasswordField(15);
tfPassword.addKeyListener(this);
lblUsername = new JLabel("Nom");
lblPassword = new JLabel("Mot de passe");
gbc = new GridBagConstraints();
gbl = new GridBagLayout();
frame.setLayout(gbl);
layoutComponents(0, 0, 1, 1, lblUsername, frame);
layoutComponents(0, 2, 1, 1, lblPassword, frame);
layoutComponents(0, 1, 3, 1, tfUsername, frame);
layoutComponents(0, 3, 3, 1, tfPassword, frame);
layoutComponents(1, 4, 1, 1, btnLogin, frame);
layoutComponents(2, 4, 1, 1, btnRegister, frame);
frame.setSize( height, width);
frame.setLocation(left, top);
frame.getContentPane().setBackground(Color.LIGHT_GRAY);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setAlwaysOnTop(true);
}
public void keyPressed(KeyEvent evt){}
public void keyTyped(KeyEvent evt){}
public void keyReleased(KeyEvent event) {
Object source = event.getSource();
if (source == tfUsername || source == tfPassword) {
if (tfUsername.getText().isEmpty() || tfPassword.getPassword().length==0) {
btnLogin.setEnabled(false);
}
else {
btnLogin.setEnabled(true);
}
if (tfUsername.getText().isEmpty() && tfPassword.getPassword().length==0) {
btnLogin.setVisible(false);
}
else {
btnLogin.setVisible(true);
}
}
}
private void layoutComponents(int x, int y, int width, int height, JComponent addThis, JFrame addTo) {
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.fill = GridBagConstraints.HORIZONTAL;
addTo.add(addThis, gbc);
}
}
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
"Etre vrai, peu le peuvent."
Friedrich Nietzsche
"Etre vrai, peu le peuvent."
Friedrich Nietzsche