IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Conception d'une application


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Par défaut Conception d'une application
    Bonsoir !
    Je souhaite créer une application assez "complexe" pour mon niveau.
    Lors de l'ouverture du programme, je souhaite voir apparaitre un formulaire.
    Selon les informations entrées, si erreur une boite de dialog d'erreur apparait, sinon, sur la même fenêtre, je fais apparaitre l'application [donc en gros ça revient à une sorte de login...]

    Mon idée première était de créer une classe principale étendue de JFrame, et, selon la situation allouer une classe étendue du JPanel.
    Par exemple : une classe étendue de JPanel qui correspond au formulaire, une fois le formulaire remplie, je le détruit et alloue une autre classe étendue de JPanel contenant la suite du programme.

    Voilà ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class GetInfoPanel extends JFrame {
     
    	private JPanel myFenetre = new Graphics();
     
    	public GetInfoPanel() {
     
    		WindowProperty();
    		this.setContentPane(myFenetre);
    		Run();
    	}
     
    	public void WindowProperty() {
    		this.setTitle("Interface GUI");
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setSize(500, 500);
    		this.setResizable(false);
    		this.setLocationRelativeTo(null);	
    	}
     
    	public void Run() {
    		this.pack();
    		this.setVisible(true);
    	}
    }
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    public class Graphics extends JPanel implements ActionListener{
    	private JPanel GridPanel = new JPanel();
    	private GridLayout myGrid = new GridLayout(6, 2, 5, 5);
     
    	private JTextField E_driver = new JTextField();
    	private JTextField E_url = new JTextField();
    	private JTextField E_BName = new JTextField();
    	private JTextField E_UName = new JTextField();
    	private JPasswordField E_pwd = new JPasswordField();
     
    	private boolean b_connexion = false;
     
    	public Graphics() {
    		run();
    	}
     
    	public void actionPerformed(ActionEvent getAct) {
    		if (getAct.getActionCommand().equals("S_valid")) {
    			System.out.println("Formulaire reçu");
    			System.out.println("Driver :" + E_driver.getText());
    			System.out.println("URL : " + E_url.getText());
    			System.out.println("BDD Name : " + E_BName.getText());
    			System.out.println("Identifiant : " + E_UName.getText());
    			if (E_driver.getText().equals("") || E_url.getText().equals("") || E_BName.getText().equals("") || E_UName.getText().equals("") || E_pwd.getPassword().equals("")) {
    				System.out.println("Un des champs est vide...");
    				new CreateDialog("Un des champs est vide...");
    			} else {
    				b_connexion = true;
    			}
    		}
    	}
    	public void run() {
    		this.setLayout(new BorderLayout());
    		this.add(GridPanel, BorderLayout.CENTER);
    		GridPanel.setLayout(myGrid);
     
    		JButton S_valid = new JButton("Se connecter");
     
    		E_driver.setText("com.mysql.jdbc.Driver");
    		E_url.setText("sql1.free-h.org/freeh_geekthun");
     
    		GridPanel.add(new JLabel("Driver :")); GridPanel.add(E_driver);
    		GridPanel.add(new JLabel("URL : ")); GridPanel.add(E_url);
    		GridPanel.add(new JLabel("BDD Name : ")); GridPanel.add(E_BName);
    		GridPanel.add(new JLabel("Identifiant : ")); GridPanel.add(E_UName);
    		GridPanel.add(new JLabel("Mot de Passe :")); GridPanel.add(E_pwd);
    		GridPanel.add(S_valid);
     
    		S_valid.setActionCommand("S_valid");
    		S_valid.addActionListener(this);
    	}
    }
    Problème, a partir de la classe principale (GetInfoPanel), je ne peux pas récupérer la variable b_connexion...
    Donc en fait, je pense avoir un gros problème de conception du programme, si vous pouviez me donner des pistes à rechercher, les classes que je devrais créer, l'ordre dans lequel les agencer...

    Je vous remercie, bonne soirée

    EDIT : Après réflexion, ne serait-il pas plus judicieux de faire le contraire ?
    A savoir la classe de départ est la classe avec le formulaire, qui une fois validé, le supprimer et ouvre une nouvelle fenêtre avec la suite de l'application ?

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Citation Envoyé par BloodyDark Voir le message
    Après réflexion, ne serait-il pas plus judicieux de faire le contraire ?
    A savoir la classe de départ est la classe avec le formulaire, qui une fois validé, le supprimer et ouvre une nouvelle fenêtre avec la suite de l'application ?
    Surement !

    Citation Envoyé par BloodyDark Voir le message
    Problème, a partir de la classe principale (GetInfoPanel), je ne peux pas récupérer la variable b_connexion...
    Utilise des accesseurs pour régler ce problème de communication entre objets. Dans ta classe Graphics, tu crée ces méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void setBConnexion(boolean b) {
        this.b_connexion = b;
    }
     
    public boolean getBConnexion() {
         return this.b_connexion;
    }
    Par contre remplace (sinon tu ne verra pas les deux méthodes ci-dessus) :
    private JPanel myFenetre = new Graphics();
    Car pourquoi prendre ainsi une référence sur la superclasse de Graphics ?

    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Graphics myFenetre = new Graphics();
    Cela te parmettra d'avoir accès au contenu de Graphics et non plus à la superclass.

    Maintenant depuis ta classe GetInfoPanel, tu peut savoir le contenu de b_connexion dans Graphics par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myFenetre.getBConnexion();
    ou/et spécifier une nouvelle valeur à b_connexion dans Graphics par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myFenetre.setBConnexion(true);
    ou
    myFenetre.setBConnexion(false);
    Sinon par convention :
    • Les attributs de classe commence toujours par une minuscule et les mots à l'intérieur commencent par une majuscules : monAttributDeClasse
    • Les noms des méthodes commencent toujours par une minuscule et les mots à l'intérieur commencent par une majuscules : getMonParametreAvecDesMots
    • Les noms des classes commencent par une majuscules et les mots à l'intérieur commencent par une majuscules : MaClasseAvecDesMots
    • Essai de choisir des noms de classe, d'attributs ou méthodes qui soient évocateurs. Par exemple : Graphics -> LoginPanel, run() -> initLayout(), ...


    @+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Par défaut
    Salut visiwi !
    Tout d'abord, merci pour ta réponse.
    Concernant l'accesseur, je l'avais fait, mais j'avais mal déclaré ma classe Graphics et je n'avais pas accès à ceux-ci, merci d'avoir résolu ce problème

    Au niveau des noms, c'est à force de trifouiller, modifier, ajouter, échanger, déplacer, que ça a fini comme ça, je n'ai pas du tout faire ça proprement.
    J'essayerais d'être plus rigoureux lors de mes prochains tests.

    Je vous tiens au courant si j'ai d'autres questions, je posterais ici la résolution de mon problème, ça peut toujours servir après tout

    Bonne soirée à toi visiwi & bonne soirée à tous !
    BloodyDark.

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    De rien , @+

Discussions similaires

  1. Conception d'une application.
    Par GarsDuCalvados dans le forum Architecture
    Réponses: 4
    Dernier message: 24/04/2007, 09h53
  2. conception d'une application de e-commerce
    Par marwen2300 dans le forum Débuter
    Réponses: 17
    Dernier message: 11/03/2007, 15h08
  3. Réponses: 8
    Dernier message: 18/07/2005, 18h38
  4. [Débutant][Conception] Contrôler une application distante
    Par muad'dib dans le forum Général Java
    Réponses: 10
    Dernier message: 05/07/2005, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo