Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1447 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problème changement fenêtre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème changement fenêtre

n°1879942
neojack
Posté le 30-04-2009 à 20:44:00  profilanswer
 

Bonjour, dans mon travail de fin d'année je me retrouve coincé.
Je vous expose le problème, et mettrai les sources après.
 
J'ai pour faire simple une interface de login pour me connecter à une base de données Access au lancement de mon application, une fois le login effectué et vérifié, ma jolie interface devrait s'en aller pour laisser place à la fenêtre principale de mon application, fenêtre dans laquelle il y aura la barre de menu, et dans laquelle auront lieu les différentes opérations.
 
Mon problème réside dans le fait que lorsque je fais appel à ma fenêtre d'application principale si j'ajoute la barre de menu dedans, j'ai une erreur à l'exécution.  
 
Je pense comprendre l'erreur, qui réside dans le fait, que comme ma page de login elle le container et qu'elle ne fait que recevoir une JPanel dedans, il faudrait que le barre de menu soit incorporée dans la classe de Login.
 
Bon pas très clair mais difficile à expliquer, vous verrez peut être mieux avec les sources.
 
D'avance merci.
 

Code :
  1. package tfe;
  2. import java.sql.*;
  3. import javax.swing.*;
  4. public class Principal
  5. {
  6.  public static void main(String args[])
  7.  {
  8.   new Logon();
  9.  }
  10. }


 

Code :
  1. package tfe;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. import java.sql.*;
  6. public class Logon extends JFrame{
  7. private Container contain;
  8. private windowAppli fenetre;
  9. private JPanel panHaut, panBas, panGauche, panDroit;
  10. private ImageIcon logo = new ImageIcon("images\\logo.png" );
  11. private JButton butExit, butLogin;
  12. private JLabel labBdd, labMdp, labLogo;
  13. private JTextField nomBddField;
  14. private JPasswordField passField;
  15. private static Connection connect;
  16. public Logon(){
  17.  contain = getContentPane();
  18.  this.setLayout(null);
  19.  setBounds(0,0,1280,800);
  20.  this.setResizable(false);
  21.  this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  22.  this.setTitle("<<< Application de maintenance informatique >>>" );
  23.  panHaut = new JPanel();
  24.     panBas = new JPanel();
  25.  panGauche = new JPanel();
  26.  panDroit = new JPanel();
  27.  panHaut.setBackground(Color.decode("#00309C" ));
  28.  panBas.setBackground(Color.decode("#00309C" ));
  29.  panGauche.setBackground(Color.decode("#5A7EDC" ));
  30.  panDroit.setBackground(Color.decode("#5A7EDC" ));
  31.  panHaut.setBounds(0,0,1280,100);
  32.  panBas.setBounds(0,670,1280,100);
  33.  panGauche.setBounds(0,100,640,570);
  34.  panDroit.setBounds(640,100,640,570);
  35.  contain.add(panHaut);
  36.  contain.add(panBas);
  37.  contain.add(panGauche);
  38.  contain.add(panDroit);
  39.  panDroit.setLayout(null);
  40.  panBas.setLayout(null);
  41.  labLogo = new JLabel(logo);
  42.  panGauche.add(labLogo);
  43.  labBdd = new JLabel("Base de données  " );
  44.  labBdd.setBounds(50,200,150,30);
  45.  panDroit.add(labBdd);
  46.  nomBddField = new JTextField("IntervMaint", 20);
  47.  nomBddField.setEditable(false);
  48.  nomBddField.setBounds(180,200,150,30);
  49.  panDroit.add (nomBddField);
  50.  labMdp = new JLabel("Mot de passe  " );
  51.  labMdp.setBounds(50,250,150,30);
  52.  panDroit.add(labMdp);
  53.  passField = new JPasswordField("test", 20);
  54.  passField.setBounds(180,250,150,30);
  55.  panDroit.add(passField);
  56.  butLogin = new JButton("Login" );
  57.  butLogin.setBounds(340,250,150,30);
  58.  panDroit.add(butLogin);
  59.  butExit = new JButton("Exit" );
  60.  butExit.setBounds(50,35,60,35);
  61.  panBas.add(butExit);
  62.  this.setVisible(true);
  63.  //Ajout d'un écouteur d'événement sur la fenêtre
  64.  //*************************************************************************
  65.  this.addWindowListener(new WindowAdapter(){
  66.   public void windowClosing(WindowEvent evt){
  67.    int choix = JOptionPane.showConfirmDialog(contain,"Voulez vous vraiment quitter l'application ?",
  68.      "Quitter l'application ?", JOptionPane.YES_NO_OPTION);
  69.    if (choix == JOptionPane.YES_OPTION) {
  70.     JOptionPane.showMessageDialog(null,"Merci d'avoir utilisé notre application, à bientôt !","Aurevoir !", JOptionPane.INFORMATION_MESSAGE);
  71.     System.exit(0);}  
  72.    else {
  73.     JOptionPane.showMessageDialog(null,"Continuons à utiliser l'application dans ce cas","Utilisation de l'application",JOptionPane.INFORMATION_MESSAGE);
  74.    }
  75.   }
  76.  });
  77.  
  78.  //Ajout d'un écouteur d'événement sur le menu
  79.  //*************************************************************************
  80.  ButtonListener bL = new ButtonListener();
  81.  butExit.addActionListener(bL);
  82.  butLogin.addActionListener(bL);
  83.  nomBddField.addActionListener(bL);
  84.  passField. addActionListener(bL);
  85.  
  86. }
  87.  
  88. private class ButtonListener implements ActionListener{
  89.  public void actionPerformed (ActionEvent evt){
  90.    
  91.   String nomBDD;
  92.   String pass;
  93.    
  94.   if (evt.getSource()==nomBddField){// Permet de taper 'Enter' pour passer au champ suivant
  95.    passField.requestFocus();
  96.   }
  97.    
  98.   if (evt.getSource() == butLogin || evt.getSource() == passField) {
  99.    nomBDD = nomBddField.getText();
  100.    pass = new String(passField.getPassword());
  101.    try {
  102.     connect = AccesGen.connecter(nomBDD, " ", pass);
  103.     JOptionPane.showMessageDialog(null,"Vous êtes bien connecté à la base de données "
  104.       + nomBDD, "Connecté",JOptionPane.INFORMATION_MESSAGE);
  105.     contain.removeAll();
  106.     contain.setLayout(new BorderLayout());
  107.     fenetre = new windowAppli(Logon.this);
  108.     contain.add(fenetre, BorderLayout.CENTER);
  109.     contain.repaint();
  110.     Logon.this.setVisible(true);
  111.     }  
  112.    
  113.    catch (SQLException e) {
  114.     JOptionPane.showMessageDialog(null, e,
  115.       "Erreur de connexion", JOptionPane.ERROR_MESSAGE);
  116.     }
  117.   }
  118.    
  119.   if (evt.getSource() == butExit) {
  120.    int choix = JOptionPane.showConfirmDialog(contain,"Voulez vous vraiment quitter l'application ?",
  121.      "Quitter l'application ?", JOptionPane.YES_NO_OPTION);
  122.    if (choix == JOptionPane.YES_OPTION) {
  123.     JOptionPane.showMessageDialog(null,"Merci d'avoir utilisé notre application, à bientôt !","Aurevoir !", JOptionPane.INFORMATION_MESSAGE);
  124.     System.exit(0);
  125.    }  
  126.    else{
  127.     JOptionPane.showMessageDialog(null,"Continuons à utiliser l'application dans ce cas","Utilisation de l'application",JOptionPane.INFORMATION_MESSAGE);
  128.    }
  129.   }
  130.  }
  131. }
  132. }


 

Code :
  1. package tfe;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. import java.sql.*;
  6. public class windowAppli extends JPanel {
  7. private Logon fenetre;
  8. private JMenuBar menuBarre;
  9. public windowAppli(Logon fenetre){
  10.  this.fenetre=fenetre;
  11.  fenetre.setTitle("test" );
  12.  this.add(menuBarre);
  13. }
  14. public JMenuBar getMenuBarre() {
  15.  return menuBarre;
  16. }
  17. }

mood
Publicité
Posté le 30-04-2009 à 20:44:00  profilanswer
 

n°1879953
manu f
L'art ephémère.
Posté le 30-04-2009 à 21:41:13  profilanswer
 

D'un point de vue conceptuel j'ai pas trop compris, du moins j'aurais pas fait comme ça si c'est ce que je pense.
 
Si je comprends bien tu veux ajouter un menu à ta fenêtre Logon et une fois que l'utilisateur s'est identifié tu ferme cette fenêtre pour en afficher une autre ? (reste à savoir si le menu tu veux le garder ou le changer lors de la disparition de ta "fenêtre" Logon)
 
 
Si c'est ça, perso. j'aurais fais :  
- hérité ma classe Logon d'un JPanel et la classe WindowAppli d'un JFrame.
- ajouter à mon contentPane (de la classe WindowAppli) mon Logon puis mon menu (que j'aurais géré dans WindowAppli)
- dés que l'utilisateur s'est identifié, tu peux garder le menu et faire en sorte que ton Logon uniquement ne s'affiche plus
 
Sinon, un autre cas, j'aurais géré Logon dans une fenêtre indépendante (avec le menu inclus dedans) ensuite dans ma méthode main j'aurais géré l'affichage de Logon et de WindowAppli de cette maniere :
 
- Logon logon = new Logon();
- un test si l'utlisiteur s'est bien identifier
- si l'identification est ok ==> un logon.setVisible(false); et une instanciation de WindowAppli qui gére ton appli principale.
 
Note :
Pour ajouter ton menuBarre j'aurais utilisé ça : (je sais pas si de la manière dont tu le fais c'est correct)

Code :
  1. this.setJMenuBar(menuBar);


Message édité par manu f le 30-04-2009 à 22:15:51

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problème changement fenêtre

 

Sujets relatifs
[RESOLU] Probleme Application FileDialogprobléme lors du download de zip en php
Petit probleme en javaProblème sur un programme VBA lorsqu'on ouvre 2 fichiers excel
Problème redirection automatique et méthode POSTProblème d'affichage double boucle (mysql_fetch_array)
suppression dans un array (tableau) [modifié][Résolu] problème avec mon Code
Petit problème avec les guillemetsProblème connexion BDD SQl
Plus de sujets relatifs à : Problème changement fenêtre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR