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 :

monter et descendre une ligne dans un tableau


Sujet :

SWT/JFace Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Points : 57
    Points
    57
    Par défaut monter et descendre une ligne dans un tableau
    bonjour a tous,
    je cherche une maniere de faire monter ou descendre une ligne selectionner dans un tableau!! (jai creer 2 bouton "up" et "down")
    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
    Action actionDown= new Action("Descendre") {
    			public void run() {
    				TableViewer viewer= new TableViewer(table);
    				int index0 = table.getSelectionIndex();
    				int index1 = index0 - 1;
    				Object o1 = table.getItem(index0);
    				Object o2 = table.getItem(index1);
    				viewer.replace( o2,index0);
    				viewer.replace(o1,index1);
    				table.select(index0);
     
     
    			}
    		};
    		Action actionUp = new Action("Monter") {
    			public void run() {
    				TableViewer viewer= new TableViewer(table);
    				int index0 = table.getSelectionIndex();
    				int index1 = index0 + 1;
    				Object o1 = table.getItem(index0);
    				Object o2 = table.getItem(index1);
    				viewer.replace( o2,index0);
    				viewer.replace(o1,index1);
    				table.select(index1);
     
     
     
    			}
    		};

    ca ne maffiche pas du tt ce que je veux!! ca ne deplace pas le contenu de la ligne !!!

    qd je clique sur descendre par exemple, je passer a la ligne suivante mais le contenue ne se deplace pas ca affiche ceci sur la ligne suivante "TableItem {TableItem {phrase de test}}"

    comment ameliorer mon code ? merci d'avance

  2. #2
    Membre confirmé Avatar de desert
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 414
    Points : 479
    Points
    479
    Par défaut
    Bonjour,
    Cela ne marche pas parce que tu récupères un TableItem plutôt que l'objet auquel la sélection correspond.
    Il faut donc récupérer l'objet en question à partir du TableViewer :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TableViewer viewer = new TableViewer(table);
    int index0 = table.getSelectionIndex();
    int index1 = index0 - 1;
    Object o1 = viewer.getElementAt(index0);
    Object o2 = viewer.getElementAt(index1);
    viewer.replace(o2, index0);
    viewer.replace(o1, index1);
    table.select(index0);
    Sinon, pour améliorer ton code, tu peux regrouper les deux actions en une classe.
    Code java : 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
    private class MonAction extends Action {
     
        int typeAction = SWT.DOWN; //Valeur par défaut
     
        public MonAction(String nomAction, int typeAction) {
            super(nomAction);
            this.typeAction = typeAction;
        }
     
        public void run() {
            int inc = 0; //Valeur à incrémenter par rapport à l'index de la sélection
            if (typeAction == SWT.DOWN)
                inc = 1;
            else if (typeAction == SWT.UP)
                inc = -1;
            TableViewer viewer = new TableViewer(table);
            int index0 = table.getSelectionIndex();
            int index1 = index0 + inc;
            Object o1 = viewer.getElementAt(index0);
            Object o2 = viewer.getElementAt(index1);
            viewer.replace(o2, index0);
            viewer.replace(o1, index1);
            table.select(index0);
        }  
    }
     
    public void maMethode() {
        ...
        MonAction actionUp = new MonAction("Monter", SWT.UP);
        MonAction actionDown = new MonAction("Descendre", SWT.DOWN);
        ...
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Points : 57
    Points
    57
    Par défaut
    mercii desert


    mais je n'arrive tjrs pas a recuperer l'objet au lieu du tableItem

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 340
    Points : 379
    Points
    379
    Par défaut
    Bonjour, je ne comprend pas pourquoi tu crés un nouveau TableViewer à chaque action... ce type d'objet doit être considéré un peu comme un widget, tu le crés lorsque tu crés ton interface graphique puis tu l'utilises tout au long de l'execution de ton programme (ou au moins aussi longtemps que le widget qu'il contient a une raison d'exister).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Points : 57
    Points
    57
    Par défaut
    c'est une erreur de ma part. je le cree qu'une seule fois en fait.

    je sais tjrs pas recuperer l'objet au lieu du tableItem.Mon fonctionne mal

  6. #6
    Membre confirmé Avatar de desert
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 414
    Points : 479
    Points
    479
    Par défaut
    C'est écrit au-dessus :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int index0 = table.getSelectionIndex();
    Object o1 = viewer.getElementAt(index0);
    Impossible que la méthode te retourne un TableItem...
    A la limite, si les données affichées dans ta table ont le même ordre que ceux de ta liste d'objets, tu peux tenter de le récupérer à partir de cette liste :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int index0 = table.getSelectionIndex();
    Object o1 = maListe.get(index0);

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Points : 57
    Points
    57
    Par défaut
    le probleme c'est que ca marche pas du tt !!

    qd je veux monter un element !!! ca efface le contenu de la case au dessus et ca ne deplace pas la ligne selectionnée

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Points : 57
    Points
    57
    Par défaut
    Personne n'as une petite idée ??

  9. #9
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut
    Bonjour,
    j'ai également eu ce problème. Et au lieu de faire le déplacement des lignes directement dans le TableViewer, je l'ai fais dans la liste qui me permet de le remplir. Ensuite pour mes actions Up et Down, j'utilise la méthode move() sur les éléments de ma liste et je fais un refresh sur le TableViewer.

    En espérant que ca puisse t'aider.
    David.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/10/2008, 12h19
  2. [HTML] Sélectionner une ligne dans un tableau en html
    Par jehlg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/06/2008, 11h55
  3. [VBA-E]insertion automatique d'une ligne dans un tableau
    Par janus82 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/04/2006, 15h42
  4. selection d'une ligne dans un tableau en html
    Par jehlg dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/02/2006, 23h08
  5. probleme bizarre de hauteur auto d'une ligne dans un tableau
    Par zax-tfh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/01/2005, 23h34

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