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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 chevronné 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
    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 confirmé
    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
    Par défaut
    mercii desert


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

  4. #4
    Membre chevronné
    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
    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 confirmé
    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
    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 chevronné 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
    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);

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