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

Composants Java Discussion :

[JTree] Deplacer un noeud sans drag & Drop


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut [JTree] Deplacer un noeud sans drag & Drop
    Bonjour, je suis assez peu familier des Jtree. La j'ai reussi a creer mon model, mon renderer avec des checkbox a chaque noeud, mon selectionModel. j'aurais besoin de creer des boutons "monter" et "descendre" afin de realiser ces actions sur un noeud selectionné de mon arbre. Mais la je seche completement. Est ce quelqu'un aurait un exemple? Merci

  2. #2
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    J'ai un peu du mal à voir ta demande autrement que comme 'expliquez moi comment je peux saisir du text dans une application sans JTextField' . Pourquoi le drag'n drop ne te convient pas dans ce que tu veux réaliser? as-tu des contraintes qui font que tu ne peux pas utiliser le drag'n drop?
    Si jamais tu ne souhaites vraiment pas utiliser le drag'n drop, le plus simple serait que tu décrives un peu plus en détail le mode de fonctionnement que tu attends.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut
    En fait je ne suis pas censé utiliser le drag & drop mais juste deux boutons up et down pour monter et faire descendre les noeuds selectionné
    Par exemple
    //avant
    Parent1
    Node1
    Node2
    Node3
    Parent2
    Node4 (selectionné)
    Node5
    Node6

    [bouton down]

    //apres
    Parent1
    Node1
    Node2
    Node3
    Parent2
    Node5
    Node4 (selectionné)
    Node6

    Voila j'espere que comme ca c'est plsu clair

  4. #4
    Membre éclairé Avatar de TrYde
    Homme Profil pro
    Responsable de l'industrialisation logiciel
    Inscrit en
    Juillet 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable de l'industrialisation logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 55
    Par défaut
    Bonjour gégé,

    Afin de faire l'action de déplacement (monter / descendre), il faut récupérer le noeud à modifier (généralement avec son TreePath), puis modifier le modèle (un dérivé de DefaultTreeModel dans ton cas) en retirant le noeud de son parent actuel (removeNodeFromParent()), puis l'ajouter à la nouvelle position (insertNodeInto()), en calculant la nouvelle position comme il faut (c'est à dire l'ancienne position +/- 1 si on reste dans la même branche, 0 si on passe à la branche suivante et (nb d'élements) si on passe à la branche précédente).

    Itérer pour plusieurs noeuds...

    Bien faire attention à ne pas sortir des limites sinon c'est l'exception

    A+

  5. #5
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    bon, je me suis lancé dans un petit exemple débile mais ca part sur le principe énoncé par TrYde :

    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
     
        public static void main(String[] args)
        {
            SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    JFrame frame = new JFrame();
                    frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
     
                    JPanel panel = new JPanel();
                    frame.getContentPane().add(panel);
     
                    JTree tree = new JTree();
                    JScrollPane scroll = new JScrollPane(tree);
                    panel.add(scroll);
     
                    JButton buttonDown = new JButton("down");
     
                    panel.add(buttonDown);
     
                    final DefaultMutableTreeNode root   = new DefaultMutableTreeNode("a");
                    DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("a_1");
                    DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("a_2");
                    DefaultMutableTreeNode child3 = new DefaultMutableTreeNode("a_3");
                    root.add(child1);
                    root.add(child2);
                    root.add(child3);
     
                    final DefaultTreeModel model = new DefaultTreeModel(root);
                    tree.setModel(model);
     
                    buttonDown.addActionListener(new ActionListener()
                    {
                        public void actionPerformed(ActionEvent e)
                        {
                            TreeNode node = root.getChildAt(0);
     
                            if ( node instanceof MutableTreeNode )
                            {
                                model.removeNodeFromParent( (MutableTreeNode)node );
     
                                model.insertNodeInto( (MutableTreeNode)node, root, root.getChildCount());
                            }
                        }
                    });
     
                    frame.pack();
                    frame.setVisible(true);
                }
            });
        }
    un peu pourrie quand même

  6. #6
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut
    Je vais tester ca merki

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

Discussions similaires

  1. drag and drop depuis JTree, image du noeud
    Par LoLoBix dans le forum 2D
    Réponses: 2
    Dernier message: 16/06/2010, 16h14
  2. Copier sans drag and drop un formulaire
    Par smilingdreamer dans le forum Access
    Réponses: 1
    Dernier message: 05/10/2005, 21h43
  3. Drag and drop sur un JTree
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 02/08/2005, 10h54
  4. [JTree] Récupérer le noeud sélectionné, sans événement
    Par Bobsinglar dans le forum Composants
    Réponses: 4
    Dernier message: 26/05/2005, 18h06

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