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

SWT/JFace Java Discussion :

Evènement sur un élément de table


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Par défaut Evènement sur un élément de table
    Bonsoir,

    J'ai essayer de faire comme d'habitude pour gérer les évènements sur mes éléments de ma table mais erreur :S
    Il me dit que la méthode addSelectionListener est indéfinie pour TableItem :S
    J'espère donc que vous pourrez m"aider
    Au passage j'aimerai faire pour que l'évènement se déclenche en double clic donc si au passage vous pouviez aussi m'aider pour ça

    Ce que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TableItem ligne = new TableItem(table,SWT.NONE);
    				ligne.addSelectionListener(new SelectionAdapter() {
    			        public void widgetSelected(final SelectionEvent arg0) {
     
    			        }
    				});
    Merci beaucoup à vous !
    Bonne soirée

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 218
    Par défaut
    Bonsoir,

    En effet, addSelectionListener ne fonctionne pas sur les tables...

    Tu as deux méthodes possibles :
    a/ Ajouter un listener sur les évenements souris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table.addMouseListener(new MouseListener() {...});
    ou b/ Ajouter un listener qui n'écoute que l'évenement "DoubleClic" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table.addListener(SWT.MouseDoubleClick, new Listener() {...});
    Comme dans cet exemple :
    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
     
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.MouseEvent;
    import org.eclipse.swt.events.MouseListener;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.widgets.Display;
    import org.eclipse.swt.widgets.Event;
    import org.eclipse.swt.widgets.Listener;
    import org.eclipse.swt.widgets.Shell;
    import org.eclipse.swt.widgets.Table;
    import org.eclipse.swt.widgets.TableColumn;
    import org.eclipse.swt.widgets.TableItem;
     
    public class ExempleTable {
        public static void main(String[] args) {
            Display display = new Display();
            Shell shell = new Shell(display);
            shell.setLayout(new FillLayout());
            final Table table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);
            table.setHeaderVisible(true);
            table.setLinesVisible(true);
            TableColumn column1 = new TableColumn(table, SWT.NONE);
            column1.setText("Colonne 1");
            TableColumn column2 = new TableColumn(table, SWT.NONE);
            column2.setText("Colonne 2");
            TableColumn column3 = new TableColumn(table, SWT.NONE);
            column3.setText("Colonne 3");
     
            for (int i = 0; i < 11; i++) {
                TableItem item = new TableItem(table, SWT.NONE);
                item.setText(new String[] { "Ligne n°" + i, "Coucou", "ca va ?" });
            }
     
            // Listeners : méthode 1
            table.addMouseListener(new MouseListener() {
     
                public void mouseDoubleClick(MouseEvent arg0) {
                    if (table.getSelectionCount() == 0) {
                        // Aucune ligne sélectionnée
                        return;
                    }
                    System.out.println("Méthode 1 : Sélection de la ligne " + table.getSelectionIndex());
                }
     
                public void mouseDown(MouseEvent arg0) {
                }
     
                public void mouseUp(MouseEvent arg0) {
                }
            });
     
            // Méthode 2
            table.addListener(SWT.MouseDoubleClick, new Listener() {
     
                public void handleEvent(Event arg0) {
                    if (table.getSelectionCount() == 0) {
                        // Aucune ligne sélectionnée
                        return;
                    }
                    System.out.println("Méthode 2 : Sélection de la ligne " + table.getSelectionIndex());                
                }});
     
     
            column1.pack();
            column2.pack();
            column3.pack();
     
            shell.pack();
            shell.open();
            while (!shell.isDisposed()) {
                if (!display.readAndDispatch())
                    display.sleep();
            }
            display.dispose();
        }
     
    }
    Attention : l'évenement double-clic est levé quand un utilisateur double-clique sur le tableau, pas forcément sur une ligne contenant des données... C'est pourquoi il y a le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (table.getSelectionCount() == 0) {
          // Aucune ligne sélectionnée
         return;
    }
    a+

    Laurent

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 171
    Par défaut
    C'est nickel !
    Merci beaucoup pour la réponse si rapidement

    Bonne soirée

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

Discussions similaires

  1. [WB17] Evénement sur clic dans une colonne d'un champ table
    Par jaymzwise dans le forum WebDev
    Réponses: 5
    Dernier message: 03/03/2015, 10h08
  2. Evènement sur un élément noeud créé dynamiquement
    Par mysianne dans le forum jQuery
    Réponses: 6
    Dernier message: 11/02/2015, 14h59
  3. Evénement clic sur un élément d'une liste
    Par maxusn dans le forum jQuery
    Réponses: 2
    Dernier message: 26/11/2012, 16h08
  4. Mouseover sur un span (evènement sur un autre élément)
    Par sliderman dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/01/2010, 06h59
  5. Evènement sur une table
    Par cjacquel dans le forum IHM
    Réponses: 3
    Dernier message: 23/05/2007, 16h08

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