p
u
b
l
i
c
i
t
é
publicité

Discussion: Checkbox SWT Listener

  1. #1
    Nouveau Membre du Club
    Femme Profil pro
    Inscrit en
    janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : janvier 2012
    Messages : 182
    Points : 29
    Points
    29

    Par défaut Checkbox SWT Listener

    Salut à tous,
    Je cherche à réaliser une checkbox en SWT. Le problème vient du listener. Je voudrais le mettre sur une ligne et non sur l'ensemble de la checkbox.

    Voici le code que je voudrais (avec le listener non fonctionnel):

    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
            Composite top = new Composite(parent, SWT.NONE);
            this.table = new Table(top, SWT.CHECK);
            this.table.setSize(204,1000);
            this.table.setHeaderVisible(true);
            this.table.setLinesVisible(false); 
    
    ...................
    
    TableColumn colonne1 = new TableColumn(table, SWT.CENTER);
            colonne1.setText("Vertex List");
            colonne1.setWidth(204);
            
                
            if (null != this.activeXmlFile){
                final Object[] colStrEnable = this.activeXmlFile.getComponentsEnable().toArray();
                final Object[] colStrName = this.activeXmlFile.getComponentsName().toArray();
                for (int i=0; i< this.activeXmlFile.getComponentsLength() ;i++)
                {
                	
                    TableItem ligne = new TableItem(table,SWT.NONE);
                    ligne.setText((String)colStrName[i]);
                    ligne.addListener(SWT.Selection, new Listener() {
                    	
    					public void handleEvent(Event event) {
    						 TableColumn colonne1 = new TableColumn(table, SWT.CENTER);
            colonne1.setText("Vertex List");
            colonne1.setWidth(204);
                        
            if (null != this.activeXmlFile){
                final Object[] colStrEnable = this.activeXmlFile.getComponentsEnable().toArray();
                final Object[] colStrName = this.activeXmlFile.getComponentsName().toArray();
                for (int i=0; i< this.activeXmlFile.getComponentsLength() ;i++)
                {
                	
                    TableItem ligne = new TableItem(table,SWT.NONE);
                    ligne.setText((String)colStrName[i]);
                    ligne.addListener(SWT.Selection, new Listener() {
                    	
    					public void handleEvent(Event event) {
    						 System.out.println("IN");
    						
    					}
                    
                    });
                    if (colStrEnable[i].equals("true")==true){
                        ligne.setChecked(true);
                    }else{
                    	ligne.setChecked(false);
                    }
    Je voudrais que lorsque je coche ou décoche une ligne, le "IN" apparaissent dans ma console.

    Je sais qu'on peut passer par un table.addListener(SWT.Selection, new Listener() mais ca ne me convient pas par rapport à mon code.

    Une idée de comment faire?

  2. #2
    Nouveau Membre du Club
    Femme Profil pro
    Inscrit en
    janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : janvier 2012
    Messages : 182
    Points : 29
    Points
    29

    Par défaut

    Pour être plus concise, je cherche à ajouter un addListener sur un TableItem.

  3. #3
    Modérateur
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : mai 2007
    Messages : 1 800
    Points : 3 774
    Points
    3 774

    Par défaut

    Salut,

    En terme de besoin fonctionnel, tu cherches à faire quoi exactement?
    Parce que nous dire que tu cherches à ajouter un listener, c'est bien, nous dire à quoi il va servir, c'est mieux
    Pour l'instant, je ne vois pas où tu veux en venir... Juste être informé que l'utilisateur à cliquer sur la checkbox dans ta Table? C'est un évènement de sélection, après il utilise le champ SelectionEvent.detail. Il te suffit de faire la comparaison avec SWT.CHECK, si ça te renvoie true, alors, c'était un clic sur la checkbox.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    myTable.addSelectionListener(new SelectionAdapter() {
      @Override
      public void widgetSelected(final SelectionEvent e) {
        if (e.detail == SWT.CHECK) {
          System.out.println("Checkbox");
        } else {
          System.out.println("Sélection");
        }
      }
    });
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  4. #4
    Nouveau Membre du Club
    Femme Profil pro
    Inscrit en
    janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : janvier 2012
    Messages : 182
    Points : 29
    Points
    29

    Par défaut

    Oui c'est comme j'avais fait au départ mais je n'arrivais pas à retomber sur ce que je voulais sans retester ma liste. Mais bon je m'y suis prise autrement, avec le même type de code, et ca marche.

    Merci!

  5. #5
    Nouveau Membre du Club
    Inscrit en
    avril 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 86
    Points : 26
    Points
    26

    Par défaut

    Dommage que tu n'es pas mis ta solution, histoire de partager un petit peu.

    Je me permet donc de proposer une solution avec une classe dérivée de TableViewer : CheckboxTableViewer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //Construction
    final CheckboxTableViewer tableViewer = CheckboxTableViewer.newCheckList(this, SWT.BORDER);
     
    //Ajout du listener
    tableViewer.addCheckStateListener(new ICheckStateListener() {
    	@Override
    	public void checkStateChanged(final CheckStateChangedEvent checkstatechangedevent) {
    		System.out.println(((/* Le type de l'objet */) checkstatechangedevent.getElement()).getId() + " : " + checkstatechangedevent.getChecked());
    	}
    });
     
    //Une autre méthode qui est assez pratique et qui te renvoie un tableau contenant les objets cochés
    tableViewer.getCheckedElements()

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

Discussions similaires

  1. Problème de Checkbox Listener
    Par o-sys dans le forum Débuter
    Réponses: 5
    Dernier message: 15/09/2012, 14h05
  2. Réponses: 6
    Dernier message: 17/03/2008, 13h28
  3. [SWT] CheckBox et Enabled(false)
    Par BiM dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 16/12/2005, 12h14
  4. Couleur d'un CheckBox
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/07/2002, 14h48
  5. CheckBox en Read Only
    Par MrJéjé dans le forum C++Builder
    Réponses: 7
    Dernier message: 23/06/2002, 15h00

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