Bonjour ,
J'ai un petit problème , en effet j'ai une fonction qui ajoute plusieurs pane a un jtabbed pane , mais bizarrement il ne l'ajoute pas
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
public Tab(HashMap<String, List<Display>> hashMap) {
			//declaration de variables communes au film en cours
			this.hashMap=hashMap;
			//sert a obtenir le bon onglet si il a déja été ajouté
			this.daystoTab = new HashMap<String, Integer>();
			this.onglets = new JTabbedPane(JTabbedPane.TOP);
			this.onglets.setPreferredSize(new Dimension(500, 75));
			int paneNumber=0; //nombre d'onglets
 
			for (String key : this.hashMap.keySet()) {// pour toutes les versions de chaque film.
				// on trie les seances par date
				Collections.sort(hashMap.get(key), new DisplayComparator());
				int i = 0;
				String tmp = "";
				JPanel pane = new JPanel();
				JLabel version = new JLabel();
				String space = "";
				// Si pour le jour il n'y a qu'une seance
				if (hashMap.get(key).size() == 1) {
					i++;
					tmp = hashMap.get(key).get(0).getDate();
					version = new JLabel("En version "+ hashMap.get(key).get(0).getType() + " : "+ hashMap.get(key).get(0).getHour());
					pane.add(version);
					//l'onglet pour le jour existe deja
					paneNumber = tabbedPaneModifier(paneNumber, pane,tmp);
				} else{
					// si il y a plus d'une seance
					version = new JLabel("En version "+ hashMap.get(key).get(0).getType() + " :");
					pane.add(version);
					while (i < hashMap.get(key).size()-1) {
						// des que l'on change de date alors on crée un nouveau Jpane ou on modifie un deja existant
						if (!tmp.equals(hashMap.get(key).get(i).getDate())&& i != 0) {
							space = "";
							pane = new JPanel();
							pane.setBackground(Color.orange);
							pane.add(version);
							paneNumber = tabbedPaneModifier(paneNumber, pane,tmp);
							//on remet a 0 les versions
							version = new JLabel("En version "+ hashMap.get(key).get(0).getType() + " :");
						}
						// on format les séances 
						pane.add(new JLabel(space+ hashMap.get(key).get(i).getHour()));
						tmp = hashMap.get(key).get(i).getDate();
						space = ",";
						i++;
					}
					//fin de la boucle , il faut maintenant ajouter la derniere date
					System.out.println("derniere date de la clé");
					paneNumber = tabbedPaneModifier(paneNumber, pane,tmp);
				}
			}
			System.out.println("on ajoute le JtabbedPane");
			this.add(onglets);
		}
 
		private int tabbedPaneModifier(int paneNumber, JPanel pane,String tmp) {
			System.out.println(tmp);
			for(Component compo : pane.getComponents()){
				System.out.println(compo);
			}
			System.out.println();
			System.out.println("il y a "+this.onglets.getTabCount()+" onglets");
			if(this.daystoTab.containsKey(DateToDay(tmp)+ " "+ tmp.substring(8))){
 
				//on recupere le numéro d'onglet
				int number=daystoTab.get(DateToDay(tmp)+ " "+ tmp.substring(8));
				System.out.println("modification de "+number);
				//on recupere le component auquel on ajoute notre liste de séances
				JPanel indiceOnglet =(JPanel)this.onglets.getComponentAt(number);
				indiceOnglet.add(pane);
				this.onglets.setComponentAt(number, indiceOnglet);
			}else{
				System.out.println("ajout de "+tmp);
				System.out.println("a l'onget "+paneNumber+" le nom est:"+ DateToDay(tmp)	+ " "+ tmp.substring(8));
				this.daystoTab.put(DateToDay(tmp)+ " "+ tmp.substring(8), paneNumber);
				if(pane==null){System.out.println("merde");}
				System.out.println(DateToDay(tmp)	+ " "+ tmp.substring(8));
				this.onglets.add(DateToDay(tmp)	+ " "+ tmp.substring(8), pane);
				paneNumber++;
				System.out.println(this.onglets.getTabCount());
			}
			System.out.println("nombre d'onglets :"+this.onglets.getTabCount());
			return paneNumber;
		}
Pour info l'execution de mon code produit ca
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
film :Evil Dead
2013-05-20
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=En version Numérique :,verticalAlignment=CENTER,verticalTextPosition=CENTER]
 
il y a 0 onglets
ajout de 2013-05-20
a l'onget 0 le nom est:lundi 20
lundi 20
1
nombre d'onglets :1
derniere date de la clé
2013-05-21
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=En version Numérique :,verticalAlignment=CENTER,verticalTextPosition=CENTER]
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=17:30,verticalAlignment=CENTER,verticalTextPosition=CENTER]
 
il y a 1 onglets
ajout de 2013-05-21
a l'onget 1 le nom est:mardi 21
mardi 21
1
nombre d'onglets :1
on ajoute le JtabbedPane
film :Gatsby le Magnifique
2013-05-20
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=En version Numérique :,verticalAlignment=CENTER,verticalTextPosition=CENTER]
 
il y a 0 onglets
ajout de 2013-05-20
a l'onget 0 le nom est:lundi 20
lundi 20
1
nombre d'onglets :1
derniere date de la clé
2013-05-21
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=En version Numérique :,verticalAlignment=CENTER,verticalTextPosition=CENTER]
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=10:30,verticalAlignment=CENTER,verticalTextPosition=CENTER]
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,13:45,verticalAlignment=CENTER,verticalTextPosition=CENTER]
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,17:00,verticalAlignment=CENTER,verticalTextPosition=CENTER]
 
il y a 1 onglets
ajout de 2013-05-21
a l'onget 1 le nom est:mardi 21
mardi 21
1
nombre d'onglets :1
2013-05-20
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=En version 3D :,verticalAlignment=CENTER,verticalTextPosition=CENTER]
 
il y a 1 onglets
modification de 0
nombre d'onglets :1
derniere date de la clé
2013-05-21
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=En version 3D :,verticalAlignment=CENTER,verticalTextPosition=CENTER]
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=11:00,verticalAlignment=CENTER,verticalTextPosition=CENTER]
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,14:30,verticalAlignment=CENTER,verticalTextPosition=CENTER]
javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,17:45,verticalAlignment=CENTER,verticalTextPosition=CENTER]
 
il y a 1 onglets
modification de 1
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
	at java.util.ArrayList.rangeCheck(ArrayList.java:571)
	at java.util.ArrayList.get(ArrayList.java:349)
	at javax.swing.JTabbedPane.getComponentAt(JTabbedPane.java:1223)
	at GUI.MovieInformation$Tab.tabbedPaneModifier(MovieInformation.java:226)
	at GUI.MovieInformation$Tab.<init>(MovieInformation.java:206)
	at GUI.MovieInformation.<init>(MovieInformation.java:59)
	at GUI.CinemaWindow.setup(CinemaWindow.java:77)
	at GUI.CinemaWindow.<init>(CinemaWindow.java:94)
	at GUI.CinemaFrame.<init>(CinemaFrame.java:21)
	at GUI.CinemaFrame.main(CinemaFrame.java:58)
J'ai essayé de verifier mon setComponentAt mais les indices sont bon ..
Merci d'avance pour votre aide