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 :

Où déclarer mes variables pour l'interface graphique ?


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Par défaut Où déclarer mes variables pour l'interface graphique ?
    Bonsoir,
    J'ai un souci bizarre.
    Enfaite, j'ai crée une appli permet de gérer les clients d'une banque.
    En gros, on a des clients qui possède un ou plusieurs comptes. Ils peuvent effectué des opérations de crédit/débit sur le compte concerné.
    Dans le détail, j'ai une classe client avec une ArrayList sesComptes de la classe Compte.
    Bref, en mode console, tout se déroule bien.
    Maintenant, j'ai commencé l'interface graphique.
    J'ai crée deux listes : la 1ere affiche les noms des clients (clients fixe). Là 2ieme devrait affiché les comptes que le client possède.
    Le souci est là.
    Pour pouvoir utilisé mes classes/méthodes, j'ai besoin de les déclarer.
    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class Interface(déclaration ici){ // il aime pas
     
    	private JFrame jFrame = null;
    ......}
    Par contre, si je déclare mes var° dans la méthode qui gère la 1ere liste cela fonctionne; j'arrive à afficher la liste de mes clients. Mais, du coup, je ne peux pas afficher les comptes dans la seconde liste! car les déclaration que j'ai effectué sont après le public void actionPerformed de la liste.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public JComboBox getJCBnomclient() {
    		if (jCBnomclient == null) {
    			jCBnomclient = new JComboBox();
    			jCBnomclient.addActionListener(new java.awt.event.ActionListener() {
    				public void actionPerformed(java.awt.event.ActionEvent e){
    .....}};
     
    /* déclaration de mon AL clients et création en dur de qqclients */
    Et si je déclare mes AL et mes clients ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public JComboBox getJCBnomclient() {
    /* ici */
    ...
    }
    il aime pas non plus!

    Je ne sais pas comment faire. Je précise que mes méthode sont déclarés en public.
    Je sait pas non plus si j'ai été très clair mais c'est pas évident à expliquer..
    J'espère que vous allez pouvoir m'aider!
    Merci

  2. #2
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Bonsoir,

    On peut parfaitement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public classe MonInterface {
        JFrame frame = null;
        JButton monBouton = null;
        // ...
    }
    Et ensuite créer les composants de l'interface, les ajouter à la frame avant d'afficher celles-ci.

    public class Interface(déclaration ici){ // il aime pas

    private JFrame jFrame = null;
    ......}
    Dis-nous ce qu' "il aime pas".

    Remarque : il est pas judicieux d'appeler une classe Interface, le mot interface étant un mot réservé du langage.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Par défaut
    Citation Envoyé par floflo_2006 Voir le message
    Bonsoir,

    On peut parfaitement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public classe MonInterface {
        JFrame frame = null;
        JButton monBouton = null;
        // ...
    }
    Et ensuite créer les composants de l'interface, les ajouter à la frame avant d'afficher celles-ci.
    "a la frame. Ici il y a qu'une fenêtre. Enfin, j'ai pas très bien compris. "Les composants de l'interface"? Tu parles des menus/liste etc..? Elles sont crée après oui.

    Dis-nous ce qu' "il aime pas".
    J'ai fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public class Interfacegraphique(ArrayList lesClient, ArrayList sesComptes){
    ..
    }
    "lesClient" sont une AL de mon app.. Arg oui sa c'est impossible. Alors il faut bien que je déclare une nouvelle AL pour mes clients dans mon int. graphique... je vais essayer. "sesComptes" sont une AL de ma classe client et sa il refuse : Syntax error on token "(", { expected. En gros, il veut ses { } et rien d'autre!

    Remarque : il est pas judicieux d'appeler une classe Interface, le mot interface étant un mot réservé du langage.
    J'ai rectifier en appelant Interfacegraphique

  4. #4
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Bonjour,

    montre nous ton code, que l'on comprenne mieux tes problèmes.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Par défaut
    Bonjour,
    Je veux bien montrer le code mais il est assez long...
    Voici donc la classe Interfacegraphique :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
     
    package pack_banque;
     
    import java.awt.event.KeyEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.Event;
    import java.awt.BorderLayout;
    import javax.swing.SwingConstants;
    import javax.swing.SwingUtilities;
    import javax.swing.KeyStroke;
    import java.awt.Point;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JMenuItem;
    import javax.swing.JMenuBar;
    import javax.swing.JMenu;
    import javax.swing.JFrame;
    import javax.swing.JDialog;
    import javax.swing.JComboBox;
    import java.awt.Dimension;
    import java.awt.Label;
    import java.awt.GridBagLayout;
    import java.awt.GridLayout;
    import java.util.ArrayList;
    import javax.swing.JButton;
    import java.awt.GridBagConstraints;
    import javax.swing.JTable;
     
    public class Interfacegraphique{
     
    	private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="10,10"
     
    	private JPanel jContentPane = null;
     
    	private JMenuBar jJMenuBar = null;
     
    	private JMenu fileMenu = null;
     
    	private JMenu helpMenu = null;
     
    	private JMenuItem exitMenuItem = null;
     
    	private JMenuItem aboutMenuItem = null;
     
    	private JMenuItem cutMenuItem = null;
     
    	private JMenuItem copyMenuItem = null;
     
    	private JMenuItem pasteMenuItem = null;
     
    	private JMenuItem saveMenuItem = null;
     
    	private JDialog aboutDialog = null;
     
    	private JPanel aboutContentPane = null;
     
    	private JLabel aboutVersionLabel = null;
     
    	private JPanel jPclient_compte = null;
     
    	private JLabel jLnomclient = null;
     
    	private JComboBox jCBnomclient = null;
     
    	private JLabel jLsescomptes = null;
     
    	private JComboBox jCBsescomptes = null;
     
    	private JButton jBcreationcompte = null;
     
    	private JFrame getJFrame() {
    		if (jFrame == null) {
    			jFrame = new JFrame();
    			jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			jFrame.setJMenuBar(getJJMenuBar());
    			jFrame.setSize(730, 265);
    			jFrame.setContentPane(getJContentPane());
    			jFrame.setTitle("Application");
    		}
    		return jFrame;
    	}
     
    	/* Affichage du Panel central */
    	private JPanel getJContentPane() {
    		if (jContentPane == null) {
    			jContentPane = new JPanel();
    			jContentPane.setLayout(new BorderLayout());
    			jContentPane.setPreferredSize(new Dimension(0, 30));
    			jContentPane.add(getJPclient_compte(), BorderLayout.NORTH);
    		}
    		return jContentPane;
    	} // Fin Panel central 
     
    	/* Ajouter les bontons Fichier, Aide */
    	private JMenuBar getJJMenuBar() {
    		if (jJMenuBar == null) {
    			jJMenuBar = new JMenuBar();
    			jJMenuBar.add(getFileMenu());
    			jJMenuBar.add(getHelpMenu());
    		}
    		return jJMenuBar;
    	}
    	/* Méthode pour afficher le "Fichier" */
    	private JMenu getFileMenu() {
    		if (fileMenu == null) {
    			fileMenu = new JMenu();
    			fileMenu.setText("Fichier");
    			//fileMenu.add(getSaveMenuItem());
    			fileMenu.add(getExitMenuItem());
    		}
    		return fileMenu;
    	} // Fin méthode "Fichier"
     
     
    	/* Méthode pour afficher le "Aide" */
    	private JMenu getHelpMenu() {
    		if (helpMenu == null) {
    			helpMenu = new JMenu();
    			helpMenu.setText("Aide");
    			helpMenu.add(getAboutMenuItem());
    		}
    		return helpMenu;
    	} // Fin Méthode "Aide"
     
    	/* Permet de quitter le programme */
    	private JMenuItem getExitMenuItem() {
    		if (exitMenuItem == null) {
    			exitMenuItem = new JMenuItem();
    			exitMenuItem.setText("Quittez");
    			exitMenuItem.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					System.exit(0);
    				}
    			});
    		}
    		return exitMenuItem;
    	} // Fin quitter le programme 
     
    	/* Méthode pour initialiser le Menu "A propos" ...*/
    	private JMenuItem getAboutMenuItem() {
    		if (aboutMenuItem == null) {
    			aboutMenuItem = new JMenuItem();
    			aboutMenuItem.setText("A propos");
    			aboutMenuItem.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					JDialog aboutDialog = getAboutDialog();
    					aboutDialog.pack();
    					Point loc = getJFrame().getLocation();
    					loc.translate(20, 20);
    					aboutDialog.setLocation(loc);
    					aboutDialog.setVisible(true);
    				}
    			});
    		}
    		return aboutMenuItem;
    	} // Fin "A propos"
     
    	/* Affchage de la fenetre "A propos" */
    	private JDialog getAboutDialog() {
    		if (aboutDialog == null) {
    			aboutDialog = new JDialog(getJFrame(), true);
    			aboutDialog.setTitle("A propos");
    			aboutDialog.setContentPane(getAboutContentPane());
    		}
    		return aboutDialog;
    	} // Fenetre "A propos"
     
    	/* Initialise le panneau "A propos" */
    	private JPanel getAboutContentPane() {
    		if (aboutContentPane == null) {
    			aboutContentPane = new JPanel();
    			aboutContentPane.setLayout(new BorderLayout());
    			aboutContentPane.add(getAboutVersionLabel(), BorderLayout.CENTER);
    		}
    		return aboutContentPane;
    	} // Fin panneau "A propos"
     
    	/**
             * This method initializes aboutVersionLabel    
             *      
             * @return javax.swing.JLabel   
             */
    	/* Initialise la fenetre "A propos" avec l'affichage de la version */
    	private JLabel getAboutVersionLabel() {
    		if (aboutVersionLabel == null) {
    			aboutVersionLabel = new JLabel();
    			aboutVersionLabel.setText("Version 1.0");
    			aboutVersionLabel.setHorizontalAlignment(SwingConstants.CENTER);
    		}
    		return aboutVersionLabel;
    	}
     
    	/**
             * This method initializes jMenuItem    
             *      
             * @return javax.swing.JMenuItem        
             * 
            private JMenuItem getSaveMenuItem() {
                    if (saveMenuItem == null) {
                            saveMenuItem = new JMenuItem();
                            saveMenuItem.setText("Save");
                            saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
                                            Event.CTRL_MASK, true));
                    }
                    return saveMenuItem;
            }*/
     
    	/**
             * This method initializes jPclient_compte      
             *      
             * @return javax.swing.JPanel   
             */
    	private JPanel getJPclient_compte() {
    		if (jPclient_compte == null) {
    			jLsescomptes = new JLabel();
    			jLsescomptes.setText("        Comptes Client :");
    			jLnomclient = new JLabel();
    			jLnomclient.setText("        Nom Client : ");
    			GridLayout gridLayout = new GridLayout();
    			gridLayout.setRows(1);
    			gridLayout.setColumns(3);
    			jPclient_compte = new JPanel();
    			jPclient_compte.setPreferredSize(new Dimension(0, 30));
    			jPclient_compte.setLayout(gridLayout);
    			jPclient_compte.add(jLnomclient, null);
    			jPclient_compte.add(getJCBnomclient(), null);
    			jPclient_compte.add(jLsescomptes, null);
    			jPclient_compte.add(getJCBsescomptes(), null);
    			jPclient_compte.add(getJBcreationcompte(), null);
    		}
    		return jPclient_compte;
    	}
     
    	/**
             * This method initializes jCBnomclient 
             *      
             * @return javax.swing.JComboBox        
             */
    	public JComboBox getJCBnomclient(){
    		/* déclaration des var ° */
    		ArrayList lesClients = new ArrayList(); // définition d'une liste pour recevoir les clients
    		/* Liste des clients fixe */
    		Client toto = new Client(1, "toto", "adresse de toto", "0546370801"); // création d'un nouveau client
    		Client alain = new Client(2, "alain", "adresse de tata", "0546370802"); // création d'un 2ieme client
    		lesClients.add(toto); // ajout du client à la liste
    		lesClients.add(alain);
     
    		/* creation dun compte */
    		Comptecourant comptetoto = new Comptecourant(1, "ladate", 2000, 0, 2, 500);
    		/* Ajout du new compte au client 1 */
    		toto.sesComptes.add(comptetoto);
     
    		if (jCBnomclient == null) {
    			jCBnomclient = new JComboBox();
    			jCBnomclient.addActionListener(new java.awt.event.ActionListener() {
    				public void actionPerformed(java.awt.event.ActionEvent e) {
    					/* ici sera gérer le remplissage de la liste des comptes clients suivant le choix du client */
    					System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
    			        JComboBox jCBnomclient = (JComboBox)e.getSource();
    			        String nomclientliste = (String)jCBnomclient.getSelectedItem();
    			        System.out.println("testName contient "+nomclientliste);
    			        //jCBsescomptes.addItem(nomclientliste.sesComptes);
    				}
    			});
    		}
     
    		/* Afficher la listes des clients via une boucle for et les assesseurs dans la liste */
    		for (int i = 0; i < lesClients.size(); i++){
    			jCBnomclient.addItem(String.valueOf(((Client) lesClients.get(i)).getNomClient()));	
    		}
    		/* Fin afficher la liste des clients*/
    		return jCBnomclient;
    	}
     
    	/**
             * This method initializes jCBsescomptes        
             *      
             * @return javax.swing.JComboBox        
             */
    	public JComboBox getJCBsescomptes() {
    		if (jCBsescomptes == null) {
    			jCBsescomptes = new JComboBox();
    		}
    		return jCBsescomptes;
    	}
     
    	/**
             * This method initializes jBcreationcompte     
             *      
             * @return javax.swing.JButton  
             */
    	private JButton getJBcreationcompte() {
    		if (jBcreationcompte == null) {
    			jBcreationcompte = new JButton("frame");
    			jBcreationcompte.setText("Créér nouveau compte");
    		}
    		return jBcreationcompte;
    	}
     
    	/**
             * Launches this application
             */
    	public static void main(String[] args) {
     
     
     
     
     
    		/* Méthode SwingUtilities */
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				Interfacegraphique application = new Interfacegraphique();
    				application.getJFrame().setVisible(true);
    			}
    		}); // Fin méthode SwingUtilities
     
    		/* Affichage de test via la Console */
    		/* Liste client */
    		//System.out.println("les clients sont "+lesClients);
    	}	// Fin de la méthode Main
    }
    Dans le JComboBox getJCBnomclient() (liste 1) j'affiche les clients. Et dans public JComboBox getJCBsescomptes() (liste 2) j'aimerais affiché les comptes du client sélectionné.
    On m'a dit qu'il fallait "agir" uniquement dans la liste 1.
    Après, on voit que j'ai déclarer mes var° dans la méthode de la liste 1. Mais j'aimerais pouvoir m'en reservir pour la liste 2. Donc je pense qu'il faut les déclarer ailleurs non? Je ne comprend pas tout là!

  6. #6
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Après, on voit que j'ai déclarer mes var° dans la méthode de la liste 1. Mais j'aimerais pouvoir m'en reservir pour la liste 2. Donc je pense qu'il faut les déclarer ailleurs non? Je ne comprend pas tout là!
    Oui déclare ta liste comme attribut de la classe et tu pourra t'en servir dans les autres méthodes.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Par défaut
    Bon appartement, les déclarations sont bonnes mais cela ne règle pas mon problème.
    J'ai deux listes : dans la liste 1, je récupère l'objet (nom d'un client) sélectionner (via un ActionPerformed) en String. Et j'aimerais faire apparaitre dans ma liste 2 les comptes qui appartiennt à ce client.
    Via des systèmes.println.. la méthode est la suivante : nomclient.sesComptes.
    Sauf qu'ici nomclient est de type classe Client. Sauf que je récupère moi un String et apparament, je ne peux pas le convertir en classe client. Du coup, mon
    nomclienrecupere.sesComptes ne fonctionne pas!
    Je ne sais pas comment faire!

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Par défaut

Discussions similaires

  1. Qu'utilisez-vous pour vos interfaces graphiques ?
    Par spilliaert dans le forum Interfaces Graphiques en Java
    Réponses: 21
    Dernier message: 04/03/2012, 16h11
  2. Réponses: 2
    Dernier message: 17/04/2010, 14h22
  3. Renseignement pour un interface graphique et langage
    Par Marsiou dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 24/01/2006, 19h01
  4. Composants à utiliser pour une interface graphique Java
    Par nicolas.pied dans le forum Composants
    Réponses: 4
    Dernier message: 28/11/2005, 20h27
  5. quel langage choisir pour mon interface graphique
    Par mrom34 dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 09/03/2004, 19h12

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