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 :

[SWT][table] supprimer une ligne.


Sujet :

SWT/JFace Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 28
    Points : 26
    Points
    26
    Par défaut [SWT][table] supprimer une ligne.
    Bonjour,

    Je voudrai supprimer de ma table n'importe quelle ligne selectionnée par l'utilisateur, lorsque ce dernier clic sur un bouton.
    J'ai donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    this.editorUI.getDeleteButton().addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) 
        {
            myTable.remove(myTable.getSelectionIndices());
        }
    });

    seulement, cette méthode déclenche une exception.

    Si j'essaye de supprimer une ligne "à la main", en faisant( toujours dans widgetSelected ) par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myTable.remove(3);
    ca marche si "3 " correspond à l'index de ma dernière ligne. Et dans tous les autres cas, ca ne marche pas...

    Quel est le problème?

    A savoir que ma table ne comporte qu'une seule colonne d'entier non éditable.

    Merci d'avance.



    ps : voici l'exception générée :

    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
     
     
    java.lang.NullPointerException
    	at org.eclipse.swt.widgets.TableItem.getBounds(TableItem.java:234)
    	at org.eclipse.swt.widgets.Table.sendEraseItemEvent(Table.java:2829)
    	at org.eclipse.swt.widgets.Table.CDDS_SUBITEMPREPAINT(Table.java:485)
    	at org.eclipse.swt.widgets.Table.wmNotifyChild(Table.java:5333)
    	at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:3794)
    	at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java:1166)
    	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3298)
    	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
    	at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
    	at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1842)
    	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:258)
    	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:183)
    	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334)
    	at org.eclipse.swt.widgets.Table.windowProc(Table.java:4491)
    	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
    	at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
    	at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1842)
    	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:258)
    	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:183)
    	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334)
    	at org.eclipse.swt.widgets.Table.windowProc(Table.java:4491)
    	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
    	at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
    	at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1842)
    	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:258)
    	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:183)
    	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3334)
    	at org.eclipse.swt.widgets.Table.windowProc(Table.java:4491)
    	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4025)
    	at org.eclipse.swt.internal.win32.OS.SendMessageW(Native Method)
    	at org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:2514)
    	at org.eclipse.swt.widgets.Table.remove(Table.java:2445)

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 444
    Points
    3 444
    Par défaut
    Salut,

    Voici un exemple qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    item.addListener(SWT.Selection, new Listener() {
          public void handleEvent(Event event) {
            table.remove(table.getSelectionIndices());
          }
        });

  3. #3
    Membre averti

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

    Informations forums :
    Inscription : Août 2006
    Messages : 218
    Points : 305
    Points
    305
    Par défaut
    La méthode getSelectionIndices renvoie un tableau de int avec les
    éléments sélectionnés (ce tableau ne contient bien sûr qu'un élément si
    ta table est de type SWT.SINGLE). Attention : ce tableau peut être vide.

    Donc voici le code qui va bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    this.editorUI.getDeleteButton().addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e)
        {
                    if (myTable.getSelectionIndices().length == 0) {
                        // Aucun élement sélectionné
                        return;
                    }
     
                    myTable.remove(myTable.getSelectionIndices());
     
        }
    });
    Laurent

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/01/2016, 16h21
  2. Supprimer une ligne d'une table html dans une page jsp
    Par dev_newbie dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 30/04/2013, 13h01
  3. [SWT] [TabItem] Ajouter une ligne en haut d'une table
    Par Poulpynette dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 07/05/2008, 10h41
  4. ajouter supprimer une ligne dans table
    Par mans27 dans le forum JSF
    Réponses: 1
    Dernier message: 28/05/2007, 13h56
  5. [C#]supprimer une ligne dans une table
    Par elitol dans le forum Windows Forms
    Réponses: 6
    Dernier message: 27/06/2006, 15h50

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