fred240683
Messages postés23Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 9 novembre 2004
-
28 oct. 2004 à 10:12
fred240683
Messages postés23Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 9 novembre 2004
-
2 nov. 2004 à 16:45
Bonjour .
Actuellement je developpe une application de client-serveur style messenger.
Voici mon code :
JFrame fen=new JFrame("Client"); //fenetre principale
fen.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JPanel panneauprincipal=new JPanel();
panneauprincipal.setLayout(new BorderLayout());
/*Menu de la fenetre*/
JMenu fichier=new JMenu("Fichier");
JMenu session=new JMenu("Session");
JMenu compte=new JMenu("Compte");
JMenuBar menuBar=new JMenuBar();
JMenuItem quitter=new JMenuItem("Quitter");
quitter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
quitter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK));
JMenuItem fermersession=new JMenuItem("Fermer sesssion");
fermersession.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
fermersession.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
JMenuItem changerpasswd=new JMenuItem("Changer mot de passe");
changerpasswd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
final JFrame fenchgerpasswd=new JFrame("Changer son mot de passe");//fenetre secondaire
final JPanel panneauchgerpasswd= new JPanel(new BorderLayout());
final JPanel changement=new JPanel(new GridLayout(4,2,0,0));
changement.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
changement.add(creeLabel("Pseudo: ",4));
final JTextField saisiePseudo= new JTextField();
saisiePseudo.setFont(new Font("MonoSpaced",Font.PLAIN,12));
changement.add(saisiePseudo);
changement.add(creeLabel("Ancien mot de passe: ",4));
final JTextField saisieOldPwd= new JTextField();
saisieOldPwd.setFont(new Font("MonoSpaced",Font.PLAIN,12));
changement.add(saisieOldPwd);
changement.add(creeLabel("Nouveau mot de passe: ",4));
final JTextField saisieNewPwd= new JTextField();
saisieNewPwd.setFont(new Font("MonoSpaced",Font.PLAIN,12));
changement.add(saisieNewPwd);
changement.add(creeLabel("Confirmation: ",4));
final JTextField saisieConfirmNewPwd= new JTextField();
saisieConfirmNewPwd.setFont(new Font("MonoSpaced",Font.PLAIN,12));
changement.add(saisieConfirmNewPwd);
final JPanel chgementBas=new JPanel(new FlowLayout());
chgementBas.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
JButton bBasOK=new JButton("OK");
JButton bBasANNULER=new JButton("ANNULER");
bBasANNULER.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
fenchgerpasswd.setVisible(false);
}
});
bBasOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if ((saisiePseudo.getText()).length()!=0 && (saisieOldPwd.getText()).length()!=0 && (saisieNewPwd.getText()).length()!=0 && (saisieConfirmNewPwd.getText()).length()!=0)
{
if ((saisieNewPwd.getText()).compareTo(saisieConfirmNewPwd.getText())==0)
{
fenchgerpasswd.setVisible(false);
}
else
{
JOptionPane.showMessageDialog(fenchgerpasswd,"La confirmation n'est pas correcte","Message d'erreur",JOptionPane.ERROR_MESSAGE);
}
}
else
{
JOptionPane.showMessageDialog(fenchgerpasswd,"Tous les champs doivent être remplis","Message d'erreur",JOptionPane.ERROR_MESSAGE);
}
}
});
chgementBas.add(bBasOK);
chgementBas.add(bBasANNULER);
panneauchgerpasswd.add(changement,"Center");
panneauchgerpasswd.add(chgementBas,"South");
fenchgerpasswd.getContentPane().add(panneauchgerpasswd);
fenchgerpasswd.pack();
fenchgerpasswd.setVisible(true);
}
});
changerpasswd.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
JMenuItem listeconnect=new JMenuItem("Liste des connectés");
listeconnect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
listeconnect.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
JMenuItem ouvrirsession=new JMenuItem("Ouvrir une session");
ouvrirsession.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
ouvrirsession.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
JMenuItem log=new JMenuItem("Se logger");
log.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
final JFrame fenlog=new JFrame("Changer son mot de passe");//fenetre secondaire
final JPanel panneaulog= new JPanel(new BorderLayout());
final JPanel logger=new JPanel(new GridLayout(2,2,0,0));
logger.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
logger.add(creeLabel("Pseudo: ",4));
final JTextField saisiePseudo= new JTextField();
saisiePseudo.setFont(new Font("MonoSpaced",Font.PLAIN,12));
logger.add(saisiePseudo);
logger.add(creeLabel("Mot de passe: ",4));
final JTextField saisiePwd= new JTextField();
saisiePwd.setFont(new Font("MonoSpaced",Font.PLAIN,12));
logger.add(saisiePwd);
final JPanel loggerBas=new JPanel(new FlowLayout());
loggerBas.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
final JButton bBasOK=new JButton("OK");
final JButton bBasANNULER=new JButton("ANNULER");
bBasANNULER.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
fenlog.setVisible(false);
}
});
bBasOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if ((saisiePseudo.getText()).length()!=0 && (saisiePwd.getText()).length()!=0)
{
fenlog.setVisible(false);
}
else
{
JOptionPane.showMessageDialog(fenlog,"Tous les champs doivent être remplis","Message d'erreur",JOptionPane.ERROR_MESSAGE);
}
}
});
loggerBas.add(bBasOK);
loggerBas.add(bBasANNULER);
panneaulog.add(logger,"Center");
panneaulog.add(loggerBas,"South");
fenlog.getContentPane().add(panneaulog);
fenlog.pack();
fenlog.setVisible(true);
}
});
log.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK));
JMenuItem creecompte=new JMenuItem("Créer un compte");
creecompte.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
final JFrame fencreecompte=new JFrame("Creer un compte"); //fenetre secondaire
JPanel panneaucompte= new JPanel(new BorderLayout());
JPanel ccompte=new JPanel(new GridLayout(3,2,0,0));
ccompte.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
ccompte.add(creeLabel("Pseudo: ",4));
JTextField saisiePseudo= new JTextField(20);
saisiePseudo.setFont(new Font("MonoSpaced",Font.PLAIN,12));
ccompte.add(saisiePseudo);
ccompte.add(creeLabel("Mot de passe: ",4));
JTextField saisiePwd= new JTextField(20);
saisiePwd.setFont(new Font("MonoSpaced",Font.PLAIN,12));
ccompte.add(saisiePwd);
ccompte.add(creeLabel("E-mail: ",4));
JTextField saisieemail= new JTextField(25);
saisieemail.setFont(new Font("MonoSpaced",Font.PLAIN,12));
ccompte.add(saisieemail);
JPanel ccompteBas=new JPanel(new FlowLayout());
ccompteBas.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
JButton bBasOK=new JButton("OK");
JButton bBasANNULER=new JButton("ANNULER");
bBasANNULER.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
fencreecompte.setVisible(false);
}
});
bBasOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
fencreecompte.setVisible(false);
}
});
ccompteBas.add(bBasOK);
ccompteBas.add(bBasANNULER);
panneaucompte.add(ccompte,"Center");
panneaucompte.add(ccompteBas,"South");
fencreecompte.getContentPane().add(panneaucompte);
fencreecompte.pack();
fencreecompte.setVisible(true);
//System.exit(0);
}
});
creecompte.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_MASK));
fichier.add(quitter);
session.add(ouvrirsession);
session.add(fermersession);
session.add(log);
compte.add(creecompte);
compte.add(changerpasswd);
compte.add(listeconnect);
menuBar.add(fichier);
menuBar.add(session);
menuBar.add(compte);
JTextField saisie =new JTextField(44);
JButton envoyer=new JButton("Envoyer");
envoyer.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
J'aimerais faire en sorte que lorsque j'appuie sur un item dans mon menu, la fenetre qui s'ouvre soit active et que l'on ne puisse pas faire quelque chose sur la fenetre principale tant qu'elle n'est pas fermée. Je pense qu'il n'y que les JDialog qui font cela.
Quelqu'un pourrait t'il m'aider à transformer mes fenetres secondaires en JDialog si cela est la bonne solution.
Merci d'avance.
toffe12
Messages postés53Date d'inscriptionvendredi 12 septembre 2003StatutMembreDernière intervention23 septembre 20051 28 oct. 2004 à 11:27
Par exemple :
final JFrame fenlog=new JFrame(fen,"Changer son mot de passe",true);
fen est la frame parent
"Changer son mot de passe" : le titre de la fenetre
true : flag pour dire que la fenetre est modale c'est à dire elle doit etre ferme pour acceder à la fenetre mere (fen)
un conseil cree des classes séparer pour la fenetre mere et les fenetres filles, car avec les JDialog elles doivent etre tuée avant de pouvoir acceder à la fenetre mere alors le code
public void actionPerformed(ActionEvent e)
{
fencreecompte.setVisible(false);
}
ne fonctionnera pas, il faudra implementer le windows listener pour chaque fenetre fille !!
fred240683
Messages postés23Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 9 novembre 2004 28 oct. 2004 à 20:21
ça ne marche pas il me dit que je dois défini fen en final et qu'il ne trouve pas de constructeur JFrame du type (fen," ",boolean).
Alors que faire ???
Peut tu me donner un exemple en ce qui concerne "un conseil cree des classes séparer pour la fenetre mere et les fenetres filles, car avec les JDialog elles doivent etre tuée avant de pouvoir acceder à la fenetre mere " svp
Merci d'avance
fred240683
Messages postés23Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention 9 novembre 2004 29 oct. 2004 à 13:05
attention toutes mes fenetres ne sont pas dans mon code.Je t'ai donné qu'une partie de mon code.
Donne moi un exemple pour une fentre fille je devrais reussir à me débrouiller.
Merci.