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

avec Java Discussion :

Réutiliser un objet


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2014
    Messages : 70
    Par défaut Réutiliser un objet
    Bonjour,

    Pour la création d'une interface graphique je dois créer un certain nombre de boutons et pour les créer je récupère les informations depuis une classe qui lit un fichier XML. Je souhaite donc passer les informations de ma classe Parseur à ma classe Bouton chargée de créer chacun de ces boutons. La complexité de cela se situe dans le fait que je devrais ajouter les informations de mon bouton une à une : le nom dans une méthode, l'image dans une autre méthode, la description encore dans une autre ... Je devrais donc pouvoir réutiliser mon objet Bouton et le passer à chacune des méthodes.
    Pour savoir comment faire, je voulais transposer ce problème de manière beaucoup plus simple, avec simplement deux classes basique : Nombre et Ajout

    Voici le code de la classe Nombre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Nombre{
     
    	public Nombre()
    	{}
    	public static void main(String[] args)
    	{
    		Ajoute a = new Ajoute(8);
    		System.out.println(a.getValeur());
    		a.setValeur(a.Ajouter(a.getValeur()));
    		System.out.println(a.getValeur());
    		System.out.println(a.valeur);
    	}
    }
    Voici le code de la classe Ajoute :
    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
    public class Ajoute{
    		int valeur;
    		
    		public Ajoute(int i)
    		{
    			this.valeur = i + 2;
    		}
    		
    		public int Ajouter(int i)
    		{
    			i += 1;
    			return i;
    		}
    		public int getValeur()
    		{
    			return this.valeur;
    		}
    		
    		public void setValeur(int valeur)
    		{
    			this.valeur = valeur;
    		}
    }
    Ce code marche, cependant j'aurais voulu savoir s'il était possible de réaliser la même manipulation mais sans créer une nouvelle variable valeur (mise en gras) dans ma classe Ajoute. J'aurais aimé savoir s'il était possible de retravailler directement sur mon objet a sans autre variable intermédiaire (ici valeur)

    Merci de votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Ta simplification est biaisée car tu utilises un "int" qui n'est pas un objet mais un type primitif.

    Laisse tomber la simplification qui va nous embarquer dans une mauvaise direction.

    Une classe qui "fabrique" des boutons est une classe de type "factory".
    Le grand intérêt du procédé est d'avoir une classe, qu'on appellera FabriqueBouton que tu instancies une fois avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FabriqueBouton  fabriqueBouton = new FabriqueBouton()
    cette classe va comporter les méthodes :
    setNom(String nom)
    setImage(Image image)
    setDescription(String description)
    ...

    et une fois que tous les set sont renseignés, il y aura la méthode "fabrique" :
    public JButon fabriqueBouton()
    qui te retournera le bouton de tes rêves.

    Ensuite tu re-reseignes tes set et tu fabrique un nouveau bouton etc.

    Conclusion : tu instancies une fois FabriqueBouton et tu lui demandes n fois de fabriquer des boutons.

    Maintenant, pour que cela soit intéressant par rapport à la bête instanciation de la classe bouton, il faut que tous les boutons aient des propriétés communes (dimensions, couleurs, etc...)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre confirmé
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2014
    Messages : 70
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Ta simplification est biaisée car tu utilises un "int" qui n'est pas un objet mais un type primitif.

    Laisse tomber la simplification qui va nous embarquer dans une mauvaise direction.
    C'était pour essayer de comprendre comment cela était possible de faire sans cette variable intermédiaire, ce qui aurait pu être utile pour mieux comprendre et peut être utilisé dans un cas futur

    Citation Envoyé par Népomucène Voir le message
    Une classe qui "fabrique" des boutons est une classe de type "factory".
    Le grand intérêt du procédé est d'avoir une classe, qu'on appellera FabriqueBouton que tu instancies une fois avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FabriqueBouton  fabriqueBouton = new FabriqueBouton()
    cette classe va comporter les méthodes :
    setNom(String nom)
    setImage(Image image)
    setDescription(String description)
    ...

    et une fois que tous les set sont renseignés, il y aura la méthode "fabrique" :
    public JButon fabriqueBouton()
    qui te retournera le bouton de tes rêves.

    Ensuite tu re-reseignes tes set et tu fabrique un nouveau bouton etc.

    Conclusion : tu instancies une fois FabriqueBouton et tu lui demandes n fois de fabriquer des boutons.

    Maintenant, pour que cela soit intéressant par rapport à la bête instanciation de la classe bouton, il faut que tous les boutons aient des propriétés communes (dimensions, couleurs, etc...)
    Je comptais bien en effet utiliser des méthodes différentes pour modifier mon bouton au fur et à mesure mais j'aurais aimé faire cela en utilisant simplement le contenu retourné au fur et à mesure par ma classe Parseur (qui parse le fichier XML ou sont contenus les noms, images, descriptions, .. des boutons) en faisant quelque chose qui ressemblait à cela :
    Dans la classe Parseur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    				if(qName.equals("nom"))
    				{
    					Bouton b = new Bouton();
    					b.AjouteNom(buffer);
                                    }
    Dans ma classe Bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	public void AjouteNom(StringBuffer buffer)
    	{
    		JButton bouton = new JButton(String.valueOf(buffer));
    	}
    Cependant lorsque je vais vouloir ajouter la description, il va falloir que je l'ajoute à ce bouton, donc il faudrait que je puisse transmettre mon bouton de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public void AjouteDescription(StringBuffer buffer, JButton bouton)
    	{
    		bouton.addDescription(buffer);
                    // Je n'ai pas le code pour ajouter une description sous la main, enfin en utilisant ToolTip en gros
    	}
    La question est comment pouvoir ajouter ma description à ce bouton ?

    Mon chef de projet m'a demandé d'essayer de faire cela sans utiliser d'autres variables, chose que j'avais fait pour réaliser les boutons la première fois

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Je crois que ton code est un peu confus.
    On va te donner le chemin pour structurer tout cela.

    Peux-tu poster :
    - le code du parser
    - le code de la classe Bouton
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre confirmé
    Homme Profil pro
    Apprenti
    Inscrit en
    Octobre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Apprenti

    Informations forums :
    Inscription : Octobre 2014
    Messages : 70
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Je crois que ton code est un peu confus.
    On va te donner le chemin pour structurer tout cela.

    Peux-tu poster :
    - le code du parser
    - le code de la classe Bouton
    Bonjour, la classe Bouton étant nouvelle, j'utilisais actuellement simplement une classe Launcher une classe LauncherParser dont voici le code:

    Launcher qui est la classe chargée de créer la fenêtre, s'occupe du positionnement et de l'aspect des composants ainsi que de la création des boutons :
    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
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.File;
    import java.io.IOException;
    import java.lang.reflect.Array;
     
    import javax.swing.*;
    import javax.swing.border.Border;
    import javax.swing.border.LineBorder;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
     
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
     
    import java.util.ArrayList;
     
    /*import java.io.File;
    import java.io.IOException;
    import java.lang.reflect.Array;
     
     
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
     
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;*/
     
    public class Launcher extends JFrame implements MouseListener{
     
    	private static final long serialVersionUID = 1L;
     
    	static JFrame fen = new JFrame();
    	ArrayList<JButton> arrayBoutonMain = new ArrayList<JButton>();
    	ArrayList<JButton> arrayBoutonAdvanced = new ArrayList<JButton>();
    	ArrayList<String> listCheminMain = new ArrayList<String>();
    	ArrayList<String> listCheminAdvanced = new ArrayList<String>();
     
        public Launcher (ArrayList<String> listNomExe, ArrayList<String> listNomOutils, ArrayList<String> listCheminExe, 
        				ArrayList<String> listCheminOutils) 
        {
        	listCheminMain = listCheminExe;
            listCheminAdvanced = listCheminOutils;
            initFenetre();
            initEntete();
            initMain();
            mainBoutons(listNomExe);
            initAdvanced();
            advancedBoutons(listNomOutils);
            fen.setVisible(true);
        }
        public void initFenetre()
        {        
    		fen.setTitle("Launcher");
    		fen.setSize(600, 400);
    		fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		fen.setResizable(false);
    		fen.setLocationRelativeTo(null);
    		fen.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
        }
        public void initEntete()
        {
     
        	int valNode = 1, espacementHauteur = 3;
        	JPanel entete = new JPanel();
        	JLabel[] texteEntete = new JLabel[2];
        	JButton boutonHelp = new JButton();
    		entete.setLayout(new GridBagLayout());
    		GridBagConstraints gbc = new GridBagConstraints();
    		texteEntete[0] = new JLabel("      Node id : " + valNode);
    		texteEntete[1] = new JLabel("Impossible d'afficher les coordonnées GPS");
     
    		gbc.gridx = 0;
    		gbc.gridy = 0;
    		gbc.insets = new Insets(espacementHauteur, 0, espacementHauteur, 135); //Insets gère l'espacement(top, left, bot,right)
    		entete.add(texteEntete[0], gbc);
     
    		gbc.gridx = 1;
    		gbc.gridy = 0;
    		gbc.insets = new Insets(espacementHauteur, 0, espacementHauteur, 105);
    		entete.add(texteEntete[1], gbc);
    		gbc.gridx = 2;
    		gbc.gridy = 0;
    		gbc.insets = new Insets(espacementHauteur, -10, espacementHauteur, 20); // -10 pour rapprocher de l'élément à gauche
     
    		entete.add(boutonHelp, gbc);
    		boutonHelp.setIcon(new ImageIcon(getClass().getResource("Images/Help.png")));
    		boutonHelp.setPreferredSize(new Dimension(32, 32));
     
    		entete.setBackground(new Color(184, 229, 255));
    		fen.add(entete);
    		fen.getContentPane().setBackground(new Color(224, 224, 224));
        }
     
        public void initMain()
        {
        	int espacementHauteur = 3;
        	JPanel main = new JPanel();
        	JLabel mainTexte = new JLabel("MAIN APPLICATIONS");
        	main.setLayout(new GridBagLayout());
        	GridBagConstraints gbc = new GridBagConstraints();
     
    		gbc.gridx = 0;
    		gbc.gridy = 0;
    		gbc.insets = new Insets(espacementHauteur, 240, espacementHauteur, 240);
        	main.add(mainTexte, gbc);
     
        	fen.add(main);
        }
     
        public void mainBoutons(ArrayList<String> listNomExe)
        {
    		JPanel mainBoutons = new JPanel();
     
    		for (int i = 0; i < listNomExe.size(); i++) 
    		{
    			JButton boutonsMain[] = new JButton[listNomExe.size()];
    			CreerBouton(i, listNomExe,boutonsMain, mainBoutons, arrayBoutonMain, listCheminMain);
    			/*arrayBoutonMain.add(boutonsMain[i]);
    			mainBoutons.add(arrayBoutonMain.get(i));*/
     
    		}
    		fen.add(mainBoutons);	
        }
     
        public void initAdvanced()
        {
        	int espacementHauteur = 3;
        	JPanel advanced = new JPanel();	
        	JLabel advancedTexte = new JLabel("ADVANCED TOOLS");
        	advanced.setLayout(new GridBagLayout());
        	GridBagConstraints gbc = new GridBagConstraints();
     
    		gbc.gridx = 0;
    		gbc.gridy = 0;
    		gbc.insets = new Insets(espacementHauteur, 245, espacementHauteur, 245);
        	advanced.add(advancedTexte, gbc);
        	fen.add(advanced);
        }
     
        public void advancedBoutons(ArrayList<String> listNomOutils)
        {
        	JButton boutonsAdvanced[] = new JButton[listNomOutils.size()];
        	JPanel advancedBoutons = new JPanel();
    		for (int i = 0; i < listNomOutils.size(); i++) 
    		{
    			CreerBouton(i, listNomOutils,boutonsAdvanced, advancedBoutons,arrayBoutonAdvanced, listCheminAdvanced);
    //			arrayBoutonAdvanced.add(boutonsAdvanced[i]);
    //			advancedBoutons.add(arrayBoutonAdvanced.get(i));
    		}
        	fen.add(advancedBoutons);
        }
     
    	@Override
    	public void mouseClicked(MouseEvent e) {}
     
    	@Override
    	public void mouseEntered(MouseEvent e) {
    		// TODO Auto-generated method stub
    		JButton button = (JButton) e.getSource();
    		Border thickBorder = new LineBorder(new Color(200,173,127), 3);
    		button.setBorder(thickBorder);
    		button.setBackground(new Color(102,153,255));
    	}
     
    	@Override
    	public void mouseExited(MouseEvent e) {
    		// TODO Auto-generated method stub
    		JButton button = (JButton) e.getSource();
    		Border thickBorder = new LineBorder(new Color(200,173,127), 1);
    		button.setBorder(thickBorder);
    		button.setBackground(new Color(224, 224, 224));
    	}
    	@Override
    	public void mousePressed(MouseEvent e) {	}
    	@Override
    	public void mouseReleased(MouseEvent e) {}
     
        public JButton CreerBouton(int i, ArrayList<String> listNomBoutons, JButton boutons[], JPanel panelBouton,ArrayList<JButton> arrayBouton,
        							ArrayList<String> listChemin)
        {
        	panelBouton.setBackground(new Color(224, 224, 224));
        	panelBouton.setPreferredSize(new Dimension(600, 140));
    		panelBouton.setLayout(new FlowLayout(FlowLayout.LEFT, 55, 7));    	
    		try
    		{
    			boutons[i] = new JButton(String.valueOf(listNomBoutons.get(i)), (new ImageIcon(getClass().getResource("Images/" + ""+listNomBoutons.get(i) +".png"))))
    			{
     
    				public Point getToolTipLocation(MouseEvent e) {
    		        return new Point(25, -20);
    		      }
    			};
    		}
    		catch(NullPointerException e)
    		{
    			try
    			{
    				boutons[i] = new JButton(String.valueOf(listNomBoutons.get(i)), (new ImageIcon(getClass().getResource("Images/erreur.png"))))
    				{
    					public Point getToolTipLocation(MouseEvent e) {
    			        return new Point(25, -20);
    			      }
    				};
    			}
    			catch(NullPointerException e1)
    			{
    				boutons[i] = new JButton(String.valueOf(listNomBoutons.get(i)))
    				{
    					public Point getToolTipLocation(MouseEvent e) {
    			        return new Point(25, -20);
    			      }
    				};				
    			}
    		}
    		boutons[i].setToolTipText("Ca c'est " + listNomBoutons.get(i)); // passer à du html si on veut mettre des retours à la ligne
    		ToolTipManager.sharedInstance().setDismissDelay(10000);
    		boutons[i].setPreferredSize(new Dimension(130, 60));
    		boutons[i].setVerticalTextPosition(SwingConstants.BOTTOM);
    		boutons[i].setHorizontalTextPosition(SwingConstants.CENTER);
    		Border thickBorder = new LineBorder(new Color(200,173,127), 1);
    		boutons[i].setBackground(new Color(224, 224, 224));
    		boutons[i].setBorder(thickBorder);
    		boutons[i].addMouseListener(this);	
    		boutons[i].addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e)
    			{
    				Runtime runtime = Runtime.getRuntime();
    				try {
    					runtime.exec(new String[] { ""+listChemin.get(i) } );
    				} catch (IOException ex1) {
    					// TODO Auto-generated catch block
    					Erreur e1 = new Erreur(1);
                                            // Erreur est une simple classe qui crée un JDialog en cas de chemin mal renseigné empêchant de lancer une application
    				}				
    			}
    		});
    		arrayBouton.add(boutons[i]);
    		panelBouton.add(arrayBouton.get(i));
    		return boutons[i];
        }
     
        public static void main(String[] args) 
        {
     
            String fileName = "C:/Launcher/V1/config.xml";
     
    		ArrayList<String> listNomExe = new ArrayList<String>();
    		ArrayList<String> listCheminExe = new ArrayList<String>();
    		ArrayList<String> listImageExe = new ArrayList<String>();
    		ArrayList<String> listNomOutils = new ArrayList<String>();
    		ArrayList<String> listCheminOutils = new ArrayList<String>();
    		ArrayList<String> listImageOutils = new ArrayList<String>();
            ArrayList<ArrayList<ArrayList<ArrayList<String>>>> a = new ArrayList<ArrayList<ArrayList<ArrayList<String>>>>();
     
            try {
    			// création d'une fabrique de parseurs SAX!
    			SAXParserFactory fabrique = SAXParserFactory.newInstance();
    			// création d'un parseur SAX
    			SAXParser parseur = fabrique.newSAXParser();
    			// lecture d'un fichier XML avec un DefaultHandler!
    			File fichier = new File(fileName);
    			DefaultHandler gestionnaire = new LauncherParser(fen);
    			parseur.parse(fichier, gestionnaire);
     
                listNomExe = ((LauncherParser) gestionnaire).getListNomExe();
                listCheminExe = ((LauncherParser) gestionnaire).getListCheminExe();
                listImageExe = ((LauncherParser) gestionnaire).getListImageExe();
                listNomOutils = ((LauncherParser) gestionnaire).getListNomOutils();
                listCheminOutils = ((LauncherParser) gestionnaire).getListCheminOutils();
                listImageOutils = ((LauncherParser) gestionnaire).getListImageOutils();
     
    		} catch (ParserConfigurationException pce) {
    			System.out.println("Erreur de configuration du parseur");
    			System.out.println("Lors de l'appel à* newSAXParser()");
    		} catch (SAXException se) {
    			System.out.println("Erreur de parsing");
    			System.out.println("Lors de l'appel à* parse()");
    		} catch (IOException ioe) {
    			System.out.println("Erreur d'entrée/sortie");
    			System.out.println("Lors de l'appel à* parse()");
    		}
    		new Launcher(listNomExe, listNomOutils, listCheminExe, listCheminOutils);
        }
    }
    LauncherParser qui me permet de récupérer chaque attribut des boutons
    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
     
    import java.util.ArrayList;
     
    import javax.swing.*;
    import java.awt.*;
     
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
     
    public class LauncherParser extends DefaultHandler {
     
    	private StringBuffer buffer;
    	JFrame fenetre = new JFrame();
    	int i = 0, j = 0, indice = 0;
    	ArrayList<String> listNomExe = new ArrayList<String>();
    	ArrayList<String> listCheminExe = new ArrayList<String>();
    	ArrayList<String> listImageExe = new ArrayList<String>();
    	ArrayList<String> listNomOutils = new ArrayList<String>();
    	ArrayList<String> listCheminOutils = new ArrayList<String>();
    	ArrayList<String> listImageOutils = new ArrayList<String>();
     
        public LauncherParser(JFrame fen) {
            super();
        	fenetre = fen;
            buffer = new StringBuffer();
        }
    	@Override
    	public void characters(char[] ch, int start, int length) throws SAXException {
    		// TODO Auto-generated method stub
    		//super.characters(ch, start, length);
            String lecture = new String(ch, start, length);
            if (buffer != null) {
                buffer.append(lecture);
            }
    	}
     
    	@Override
    	public void startElement(String uri, String localName, String qName,
    			Attributes attributes) throws SAXException {
    		// TODO Auto-generated method stub
    		//super.startElement(uri, localName, qName, attributes);
    		if(qName.equals("exe") || qName.equals("bouton") || qName.equals("outils"))
    		{
    			buffer = null;
    		}
    		else
    		{
    			buffer = new StringBuffer();
    		}
     
    	}
     
    	@Override
    	public void endElement(String uri, String localName, String qName)
    			throws SAXException {
    		// TODO Auto-generated method stub
    		//super.endElement(uri, localName, qName);
    		if(buffer != null)
    		{
    			if(indice == 0)
    			{
    				if(qName.equals("nom"))
    				{
    					listNomExe.add(String.valueOf(buffer));
    				}
    				if(qName.equals("chemin"))
    				{
    					listCheminExe.add(String.valueOf(buffer));
    				}
    				if(qName.equals("image"))
    				{
    					listImageExe.add(String.valueOf(buffer));
    				}
    			}
    			else if (indice == 1)
    			{
    				if(qName.equals("nom"))
    				{
    					listNomOutils.add(String.valueOf(buffer));
    					//Bouton b = new Bouton(buffer);
    					Bouton b = new Bouton();
    					b.AjouteNom(buffer);
    					//fenetre.add(b.CreerBouton(buffer));
    				}
    				if(qName.equals("chemin"))
    				{
    					listCheminOutils.add(String.valueOf(buffer));
    				}
    				if(qName.equals("image"))
    				{
    					listImageOutils.add(String.valueOf(buffer));
    				}
    			}
    		}
    		if(qName.equals("bouton"))
    		{
    			buffer = null;
    		}
    		buffer = null;
    		if(qName.equals("exe"))
    		{
    			indice = 1;
    			// A la fin des boutons exe on passe indice à 1 pour rentrer les données dans la deuxième liste
    		}
     
    	}
    	public ArrayList<String> getListNomOutils() {
    		return listNomOutils;
    	}
    	public ArrayList<String> getListCheminOutils() {
    		return listCheminOutils;
    	}
    	public ArrayList<String> getListNomExe() {
    		return listNomExe;
    	}
    	public ArrayList<String> getListCheminExe() {
    		return listCheminExe;
    	}
    	public ArrayList<String> getListImageExe() {
    		return listImageExe;
    	}
    	public ArrayList<String> getListImageOutils() {
    		return listImageOutils;
    	}
    }
    N'hésitez pas à me poser des questions si vous en avez.
    Merci

Discussions similaires

  1. Réutilisation d'un objet dans une boucle
    Par Stepsbysteps dans le forum R
    Réponses: 2
    Dernier message: 14/03/2013, 16h30
  2. Réutiliser des objets préloadés
    Par White Threat dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 08/02/2011, 10h49
  3. Réutiliser l'instance d'un objet
    Par SkyWalker dans le forum Débuter
    Réponses: 10
    Dernier message: 27/09/2007, 11h34
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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