Problème de boucle avec composant SWT

kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011 - 1 févr. 2007 à 21:35
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011 - 4 févr. 2007 à 18:33
bonsoir,

j'ai un problème avec la classe tabFolder qui est un composant SWT.

j'ai fais une boucle normale mais elle ne fonctionne qu'à moitié.  Je pense que c'est tout bete à resoudre mais je galère depuis 2 jours la dessus.

tabFolder.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
tabFolder.getSelectionIndex();

if (tabFolder.getSelectionIndex()== 2){

suivant.setEnabled(false);
précédent.setEnabled(true);}
else if (tabFolder.getSelectionIndex()== 1){
suivant.setEnabled(true);
précédent.setEnabled(true);}

/*else if (tabFolder.getSelectionIndex()== 0) {
suivant.setEnabled(true);
précédent.setEnabled(false);
}*/

}

});

Le dernier else je l'ai mis en commentaire car sa ne fonctionne pas sinon. Savez-vous pourquoi?
Le getSelection me retourne la position de l'onglet sur lequel je me trouve(0,1,2) comme j'en ai 3.
si j'affiche l'index dans la console, le premier onglet est égal à 0, le deuxième à 1 et le
troisième à 2. Pour l'onglet 2 et 3 sa fonctionne. Mais pour le premier onglet je met :
else if{
tabFolder.getSelection ==0

...
...
}
L'application se lance avec un message d'erreur : unable to create view.
Alors que le premier onglet a pour valeur 0 et que pour les autres sa marche.
Je comprend pas tout là.

Merci d'avance.
olivier

4 réponses

cheplu Messages postés 16 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 1 juillet 2007
3 févr. 2007 à 13:09
Comment sont définies tes variables suivant et précédent?... Parceque si dans précédent (dans le cas ou tu est sur l'onglet 0) tu essaye d'aciver un onglet -1, ça peut poser problème...
0
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011
4 févr. 2007 à 10:10
salut,

Tout d'abord merci pour ta réponse.

voici comment est d'abord défini suivant puis ensuite précédent.
suivant

 =
new Button(
canvas, SWT.
NONE );

suivant .setBounds(
new Rectangle(100, 493, 81, 17));

suivant .setText(
"Suivant");

suivant .addSelectionListener(
new org.eclipse.swt.events.SelectionAdapter() {

public
void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {

int i;
i =
tabFolder.getSelectionIndex();

if (
tabFolder.getSelectionIndex()!= 1)
{

tabFolder.setSelection(i+1);
// i représente ton onglet courant
précédent.setEnabled(
true );
}

else
{

tabFolder.setSelection(i+1);

suivant.setEnabled(
false);
}
}
});

précédent

  =
new Button(
canvas, SWT.
NONE );

précédent  
.setBounds(
new Rectangle(14, 493, 81, 16));

précédent .setText(
"Précédent");

précédent .addSelectionListener(
new org.eclipse.swt.events.SelectionAdapter() {

public
void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {

int i;
i =
tabFolder.getSelectionIndex();

if (
tabFolder.getSelectionIndex()! = 1)
{

tabFolder.setSelection(i-1);

suivant.setEnabled(
true);
}

else
{

tabFolder.setSelection(i-1);

précédent .setEnabled(
false);
}
}
});
Voilà. Merci encore.

olivier
0
cheplu Messages postés 16 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 1 juillet 2007
4 févr. 2007 à 13:57
Bien... Je ne connait pas la bibliothèque SWT... Mais enore une fois, ce que je vois c'est que tu fait ça :

i =
tabFolder.getSelectionIndex();
if
(
tabFolder.getSelectionIndex()! = 1)
{

tabFolder.setSelection(i-1);

suivant.setEnabled(true
);
}

c'est à dire que pour le cas ou l'index sélectionné est 0, tu essaye de sélectionner l'onglet -1 ! Je ne sais dans quelle mesure ça peut poser problème mais je ne pourrais sans dout pas t'en dire plus. C'est peut être de ce coté la que tu doit chercher si tu rencontre toujours les mêmes problèmes.
0
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011
4 févr. 2007 à 18:33
Re,

ben ce bout de code fonctionne nikel. C'est pour quand j'appuie sur les boutons. Le code au niveau des boutons fonctionnent très bien.

i = tabFolder.getSelectionIndex();
if
(
tabFolder.getSelectionIndex()! = 1)
{

tabFolder.setSelection(i-1);

suivant.setEnabled(true
);
}

Cest le code des onglets qui bug. Car la première partie fonctionne mais pas la partie

else if (tabFolder.getSelectionIndex()== 0) {
suivant.setEnabled(true);
précédent.setEnabled(false);
}

C'est bizarre car le premier onglet est bien l'onglet 0.

olivier
0
Rejoignez-nous