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

Java Discussion :

Problème de création de liste dans une classe.


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut Problème de création de liste dans une classe.
    Bonjour à tous

    Le titre n'est pas vraiment très claire. Mais je ne sais pas vraiment comment mettre un titre sur mon problème.

    Pour faire court j'ai une appli qui gère plusieurs matrices. Ces matrices sont en réalité des feuilles excel.
    Pour chaque matrice de mon dossier je veux créer un masque. Le masque comprendra plusieurs infos dont le nombre de tableaux présents dans le fichier excel de la matrice.

    Je veux donc créer un masque pour la matrice. Et cette masque aura une liste de Tableau.

    Tout d'abord voici ma fenêtre pemettant de gérer les infos des mes tableaux :
    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
     
    public void updateCreateTab(){
    		Composite compCreateTab = new Composite(group, SWT.NONE);
    		GridLayout createTabGD = new GridLayout(4,false);
    		createTabGD.horizontalSpacing = 20;
    		createTabGD.verticalSpacing = 20;
    		compCreateTab.setLayout(createTabGD);
    		Label labelTab = new Label(compCreateTab, SWT.NONE);
    		labelTab.setFont(new Font(null,"Arial",10,1));
    		labelTab.setText("Tableau n°" + idTab);
    		GridData labelTabGD = new GridData(GridData.CENTER);
    		labelTabGD.horizontalSpan = 4;
    		labelTab.setLayoutData(labelTabGD);
    		Label labelCellHG = new Label(compCreateTab, SWT.NONE);
    		labelCellHG.setFont(new Font(null,"Arial",10,0));
    		labelCellHG.setText("Cellule haut gauche :    Ligne :");
    		ligneHG = new Spinner(compCreateTab, SWT.NONE);
    		Label labelColHG = new Label(compCreateTab, SWT.NONE);
    		labelColHG.setFont(new Font(null,"Arial",10,0));
    		labelColHG.setText("Colonne :");
    		colHG = new Spinner(compCreateTab, SWT.NONE);
    		Label labelCellBD = new Label(compCreateTab, SWT.NONE);
    		labelCellBD.setFont(new Font(null,"Arial",10,0));
    		labelCellBD.setText("Cellule bas droite :        Ligne :");
    		ligneBD = new Spinner(compCreateTab, SWT.NONE);
    		Label labelColBD = new Label(compCreateTab, SWT.NONE);
    		labelColBD.setFont(new Font(null,"Arial",10,0));
    		labelColBD.setText("Colonne :");
    		colBD = new Spinner(compCreateTab, SWT.NONE);
    		TableItem[] tab = tabEqp.getItems();
    		tabEqpTab = new Table(compCreateTab, SWT.BORDER);
    		TableColumn columnEqpName = new TableColumn(tabEqpTab, SWT.NONE);
    		columnEqpName.setText("Equipement");
    		columnEqpName.setWidth(100);
    		TableColumn columnLigne = new TableColumn(tabEqpTab, SWT.NONE);
    		columnLigne.setText("Ligne");
    		columnLigne.setWidth(100);
    		columnLigne.setResizable(false);
    		TableColumn columnColonne = new TableColumn(tabEqpTab, SWT.NONE);
    		columnColonne.setText("Colonne");
    		columnColonne.setWidth(100);
    		columnColonne.setResizable(false);
    		tabEqpTab.setHeaderVisible(true);
    		tabEqpTab.setLinesVisible(true); 
    		GridData tabGD = new GridData(GridData.CENTER);
    		tabGD.horizontalSpan = 4;
    		tabGD.verticalSpan = 4;
    		tabEqpTab.setLayoutData(tabGD);
    		for (int i = 0; i<tab.length; i++){
    			if (tab[i].getChecked()){
    				new TableItem(tabEqpTab,SWT.NONE);
    			}
    		}
    		TableItem[] items = tabEqpTab.getItems();
    		for (int i = 0; i< items.length; i++){
    			TableEditor editor = new TableEditor(tabEqpTab);
    			Label labelEqp = new Label(tabEqpTab, SWT.NONE);
    			labelEqp.setText(tab[i].getText());
    			listLabelEqp.add(labelEqp);
    			editor.grabHorizontal = true;
    			editor.grabVertical = true;
    			editor.setEditor(labelEqp, items[i], 0);
    			Spinner SpinnerLigne = new Spinner(tabEqpTab,SWT.NONE);
    			listLigneEqp.add(SpinnerLigne);
    			editor = new TableEditor(tabEqpTab);
    			editor.grabHorizontal = true;
    			editor.setEditor(SpinnerLigne, items[i], 1);
    			spinnerColonne = new Spinner(tabEqpTab,SWT.NONE);
    			listColEqp.add(spinnerColonne);
    			editor = new TableEditor(tabEqpTab);
    			editor.grabHorizontal = true;
    			editor.setEditor(spinnerColonne, items[i], 2);
    		}
    		if (idTab < this.nbTableaux.getSelection()){
    			Button btnNextTab = new Button(compCreateTab, SWT.PUSH);
    			btnNextTab.setText("Tableau suivant");
    			btnNextTab.addSelectionListener(new NextTabListener(parametrageControllerPageFive));
    		}
    		else{
    			btnCreateMask = new Button(compCreateTab, SWT.PUSH);
    			btnCreateMask.setText("Créer le masque");
    			btnCreateMask.addSelectionListener(new CreateMaskListener(parametrageControllerPageFive));
    		}
     
    		slGroup.topControl = compCreateTab;
    		group.layout();
    	}
    Lorsque je veux passer aux information concernant un autre tableau de la matrice voici le code :

    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
    public void updateTabNext(){
    		TableItem[] items = tabEqpTab.getItems();
    		TableColumn[] tabCol = tabEqpTab.getColumns();
    		for(int i = 0; i<items.length; i++){
    			String nameEqp = listLabelEqp.get(i).getText();
    			int ligneEqp = listLigneEqp.get(i).getSelection();
    			int colonneEqp = listColEqp.get(i).getSelection();
    			parametrageControllerPageFive.createEqpTab(nameEqp, ligneEqp, colonneEqp);
    		}
    
    		int index = tabMat.getSelectionIndex();
    		//if (tabMat.getItem(index).getBackground().equals(new Color(null,83,213,148))){
    			parametrageControllerPageFive.createTab(idTab, ligneHG.getSelection(), 
    					colHG.getSelection(), ligneBD.getSelection(), colBD.getSelection());
    		//}
    		/**else{
    			parametrageControllerPageFive.createTab(idTab, ligneHG.getSelection(), 
    					colHG.getSelection(), ligneBD.getSelection(), colBD.getSelection(), false);
    		}*/
    		
    		
    		idTab++;
    		updateCreateTab();
    		
    	}
    Et enfin lorsque tous les infos de tous les tableaux sont remplis je créais le masque :

    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
    public void createMask(){
    		int index = tabMat.getSelectionIndex();
    		//if (tabMat.getItem(index).getBackground().equals(new Color(null,83,213,148))){
    			List<Tableau> tabs = parametrageControllerPageFive.createTab(idTab, ligneHG.getSelection(), 
    					colHG.getSelection(), ligneBD.getSelection(), colBD.getSelection());
    		//}
    		/**else{
    			parametrageControllerPageFive.createTab(idTab, ligneHG.getSelection(), 
    					colHG.getSelection(), ligneBD.getSelection(), colBD.getSelection(), false);
    		}*/
    		String nameMask = this.textName.getText();
    		int nbTab = this.nbTableaux.getSelection();
    		int lTest = this.lTest.getSelection();
    		int cTest = this.cTest.getSelection();
    		Masque mask = parametrageControllerPageFive.createMask(nameMask, nbTab, lTest, cTest, tabs);
    		tabMat.getItem(index).setBackground(new Color(null,83,213,148));
    		if (this.getPreviousPage().getName().equals("Quatrième Page")){
    			listMatrice = MyWizard.one.getListMat();
    		}
    		for(int m = 0; m<listMatrice.size(); m++){
    			if(listMatrice.get(m).getName().equals(tabMat.getItem(index).getText())){
    				listMatrice.get(m).setMasque(mask);	
    			}
    		}
    		
    		
    		boolean next = true;
    		TableItem[] tab = tabMat.getItems();
    		for(int j = 0; j<tab.length; j++){
    			if(!tab[j].getBackground().equals(new Color(null,83,213,148))){
    							next = false;
    			}
    		}
    		if(next){
    			setPageComplete(true);
    		}
    		else{
    			setPageComplete(false);
    		}
    		btnCreateMask.setEnabled(false);
    	}
    Et voici mes fonctions permettant de créer la liste de tableaux et le masque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Masque createMask(String nameMask, int nbTab, int lTest, int cTest, List<Tableau> tabs){
    		Masque mask = new Masque(nameMask, nbTab, listEqpTab, tabs, lTest, cTest);
    		masks.addMask(mask);
    		return(mask);
    	}
     
     
    	public void createEqpTab(String name, int ligne, int colonne){
    		EquipementTab eqpTab = new EquipementTab(name, ligne, colonne);
    		listEqpTab.add(eqpTab);
    	}
    Le problème que j'ai c'est que lorsque je créer mon premier masque pour ma première matrice tout va nikel, le nom du masque, ses infos, la liste de tableaux... Tout va.

    Par contre lorsque je créé un deuxième masque pour une autre matrice, le premier masque garde ses infos saus concernant la liste de tableaux où il récupère celle du nouveau masque. Je cherche mais je ne vois pas comment y remédier... Je ne sais pas si j'ai été assez clair, je reste à votre disposition pour plus d'informations.

    Je vous remercie pour votre aide

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    hum j'ai pas tout lu en détail parce que ça fait beaucoup à cette heure ci

    mais dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Masque createMask(String nameMask, int nbTab, int lTest, int cTest, List<Tableau> tabs){
    		Masque mask = new Masque(nameMask, nbTab, listEqpTab, tabs, lTest, cTest);
    		masks.addMask(mask);
    		return(mask);
    	}
    je remarque que
    1) masks est déclarée nulle part, donc à priori c'est une variable de classe
    2) dans aucune des autres méthodes dont tu donnes le source, on ne voit cette variable,

    si tu ne réinitialises pas cette variable à chaque nouvelle séquence d'appels, c'est normal que tu aies une accumulation...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    En fait masks est une liste de tous mes masques. A chaque fois que je créais un masque il est mis dans la liste. Je ne pense pas que cela pose un problème si ?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    comme j'avais pas tout lu en détail, j'avais pas noté dans

    Par contre lorsque je créé un deuxième masque pour une autre matrice, le premier masque garde ses infos saus concernant la liste de tableaux où il récupère celle du nouveau masque. Je cherche mais je ne vois pas comment y remédier
    j'ai pas le code de la classe Masque, mais à priori, je pense que tu as déclaré ta variable "liste de tableaux" en static...

    fournit le code de ta classe Masque...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Bon j'ai résolu mon problème. Ce dernier se situé quand je créais mes tableaux. Je viens de voir que j'ai oublié de mettre la méthode ici

    Bref avant j'avais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void createTab(int idTab, int ligneHG, int colHG, int ligneBD, int colBD){
    		if (idTab == 1){
    			listTab.clear();
    		}
    		Tableau tab = new Tableau(idTab, ligneHG, colHG, ligneBD, colBD, listEqpTab);
    		listTab.add(tab);
    Maitenant en faisant ça ça marche nikel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public List<Tableau> createTab(int idTab, int ligneHG, int colHG, int ligneBD, int colBD){
    		if (idTab == 1){
    			listTab.clear();
    		}
    		Tableau tab = new Tableau(idTab, ligneHG, colHG, ligneBD, colBD, listEqpTab);
    		listTab.add(tab);
    		List<Tableau> tabs = new ArrayList<Tableau>();
    		for (int i=0; i<listTab.size(); i++){
    			tabs.add(listTab.get(i));
    		}
    		return(tabs);
    	}

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2010
    Messages : 434
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    comme j'avais pas tout lu en détail, j'avais pas noté dans



    j'ai pas le code de la classe Masque, mais à priori, je pense que tu as déclaré ta variable "liste de tableaux" en static...

    fournit le code de ta classe Masque...
    C'est exactement ça, ma liste de tableaux était en static

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/06/2010, 15h24
  2. problème d'affichage du résultat dans une classe qui utilise SNMP
    Par ramzouni dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 22/05/2009, 01h26
  3. Problème de visibilité d'attributs dans une classe
    Par Nico123 dans le forum Langage
    Réponses: 6
    Dernier message: 23/01/2009, 14h33
  4. Réponses: 7
    Dernier message: 29/04/2007, 10h37
  5. Réponses: 4
    Dernier message: 16/05/2006, 23h15

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