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

Java Discussion :

Drag and Drop ( Exemple simple )


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut Drag and Drop ( Exemple simple )
    Bonjour ,

    Avez vous des tutoriels ou un code simple qui permet de deraguer un objet sur une Image . ( Sachant que l'objet source ne doit pas remplacer l'objet déstinaire ) c'est à dire , j'aurais a la fin de mon "drag and drop " , l'objet sur l'image .

    Merci !

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Je pense qu'il nous faudrait un peu plus d'informations pour te répondre.
    Ton Image est affiché dans quoi ? Où récupérées-tu ton objet ?
    As-tu déjà une ébauche de code où doit aller ce D&D ?

    Cordialement,
    Patrick Kolodziejczyk
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Je pense qu'il nous faudrait un peu plus d'informations pour te répondre.
    Ton Image est affiché dans quoi ? Où récupérées-tu ton objet ?
    As-tu déjà une ébauche de code où doit aller ce D&D ?

    Cordialement,
    Patrick Kolodziejczyk
    Bonjour ,

    Voila une image de ce que je voudrais faire .

    L'image se trouve dans un JPanel . et le Button se trouve dans une JToolbar , je voudrais faire un DragNDrop comme sur le logiciel ArgoUML .

    Cordialement .
    Images attachées Images attachées  

  4. #4
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    slt,
    Tu doit mettre ton image sur un composant jlabel grace a la methode setIcon (ImageIcon), en suite, rajoute un mouselistener a ton jlabel, tu doit ré-implémenter la methode mousedragged. A l'interieur de cette methode, tu doit modifier la position de ton jlabel en utilisant les methodes setAllignementX (float x), setAllignementY (float y), en fonction de la nouvelle position de la souris, ce qui va donner un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    monjlabel.addMouseListener (new MouseAdapter (){
        public void mouseDragged(MouseEvent e) {
          modifier_pos (Integer.ValueOf (e.getX ()).floatValue (), Integer.ValueOf (e.getY ()).floatValue ());
        }
    });
    private void modifier_pos (float x, float y) {
        monjlabel.setAllignementX (x);
        monjlabel.setAllignementY (y);
    }

  5. #5
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Merci mais cela ne répond pas a mon probleme

  6. #6
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Bonjour ,

    Est ce que vous avez un exemple concret de ce que je voudrais faire ?

  7. #7
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    slt,
    Si j'ai bien compris tas ton probleme, tu veut faire des dessins, le rajout d'une form (le S par exemple) se fait en cliquant sur le bouton, puis sur l'espace de dessin, donc, de preference, tu doit crée une classe fille (deivée) a la classe jpanel, en suite reimplementer la methode paint (Graphics), dans la quelle tu dessine tes forms, voici un exemple que j'espere pourra t'aidé (dessin d'une ligne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class ligne extends JPanel {
    public ligne (int x, int j/*position du clique souris*/) {
      this.setBounds (x, y, largeur, hauteur);
    }
    public void paint (Graphics g)
        {//paint
            g.setColor (Color.BLACK);
            g.drawline (0, 0, 20, 20);  //g.drawline (xPremierPoint, yPremierPoint, xDeuxiemePoint, yDeuxiemePoint);
        }//paint
    }
    Ensuite, tu doit produire des objets de type ligne, et les rajoutés a ton JPanel, ou a ton JFrame dans le cas d'un clique de la souris, comme suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    myjpanel.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        new ligne (e.getX (), e.getY ());
                    }
            });
    Je pense que j'ai bien repondu a tas question, sinon, si cela ne resous pas ton probleme, Essaye de nous donner plus de details sur ton probleme, et on vera se qu'on peut faire .

  8. #8
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Merci pour ta réponse ,

    Mais je voudrais , faire un glisser-deplacer sur la MAP du bouton S . Le résultat attendu est d'avoir le bouton " S" sur l'Image .


  9. #9
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Pour etre plus précis , c'est de creer des objet boutton dynamiquement et les faire glisser sur la partie Image de mon IHM .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JButton btn[] = new JButton[100] ; 
     
    public void permformed() 
     { 
    int cpt = 0 ; // je dois avoir une incrementation a chaque clique pour avoir des indice different 
        btn[cpt] = new btn("s") ; 
     
       }
    aprés la création du button , je ferai un Drag N Drop sur mon image . et cela , je ne sais pas le gérer !
    A la fin , j'aurai une map , avec plein de bouton de type "S" , que je peux paramétrer séparement , ou bien a la bien du Button , je copie que l'icone du bouton ou le label du bouton .


  10. #10
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    slt,
    Pour ca, tu peut detecter le premier clique du maintien du bouton de la souris sur ton objet grace a mousePressed, ensuite le relachement du bouton de la souris grace a mouseReleased, si l'emplacement ou se fait le relachement du bouton de la souris se trouve a l'interieur de ton image, tu rajoute ton bouton, sinon, tu ne fait rien .
    Pour sauvegarder les références vers tes JButton, tu ferai mieux d'utiliser un ArrayList, au lieu d'un Button [], car avec un tableau ordinaire (JButton []), le nombre des JButton reste limité par le nombre de l'initilisation, 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
     
    ArrayList <JButton> tab = new ArayList <JButton> ();
    myjbouton..addMouseListener (new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
                                    System.out.println ("Bouton cliquer et maintenu");
    }
    public void mouseReleased(MouseEvent e){
                                if (position_relachement_valide (e.getX (), e.getY ())){
    				Button b = new JButton ();
                                    b.setBounds (nouvelle_position (e.getX ()), nouvelle_position (e.getY ()), 20, 20);
                                    myjpanel.add (b);
                                    tab.add (b);
                                }
    }
    });
    REMARQUE : Le e.getX (), e.getY () serons en fonction de la position de ton objet sur le quel s'est fait le drag N drop .
    Pour recuperer un objet du tableau tab (Une reference), tu peut utiliser la méthode get (int index_ds_la tableau) .
    S'il y a d'autre questions, ou des suggestions, n'esite pas.
    a+ .

  11. #11
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par mohamine1989 Voir le message
    slt,
    Pour ca, tu peut detecter le premier clique du maintien du bouton de la souris sur ton objet grace a mousePressed, ensuite le relachement du bouton de la souris grace a mouseReleased, si l'emplacement ou se fait le relachement du bouton de la souris se trouve a l'interieur de ton image, tu rajoute ton bouton, sinon, tu ne fait rien .
    Pour sauvegarder les références vers tes JButton, tu ferai mieux d'utiliser un ArrayList, au lieu d'un Button [], car avec un tableau ordinaire (JButton []), le nombre des JButton reste limité par le nombre de l'initilisation, 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
     
    ArrayList <JButton> tab = new ArayList <JButton> ();
    myjbouton..addMouseListener (new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
                                    System.out.println ("Bouton cliquer et maintenu");
    }
    public void mouseReleased(MouseEvent e){
                                if (position_relachement_valide (e.getX (), e.getY ())){
    				Button b = new JButton ();
                                    b.setBounds (nouvelle_position (e.getX ()), nouvelle_position (e.getY ()), 20, 20);
                                    myjpanel.add (b);
                                    tab.add (b);
                                }
    }
    });
    REMARQUE : Le e.getX (), e.getY () serons en fonction de la position de ton objet sur le quel s'est fait le drag N drop .
    Pour recuperer un objet du tableau tab (Une reference), tu peut utiliser la méthode get (int index_ds_la tableau) .
    S'il y a d'autre questions, ou des suggestions, n'esite pas.
    a+ .
    Merci pour les explications , je ne sais pas si tu l'as testé chez toi , mais chez moi avec les adaptations ( j'ai ajouté ton code dans une class ) que j'ai fait , ça ne marche pas . Je pense que c'est un peu plus complexe et qu'il faut utiliser , le "TransferHandler " .

  12. #12
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    Non, je suppose que t'as du faire des erreurs de manipulation, ca marche trés bien chez moi, essaye ca, et voix ce que tu peut en tirer . DragNDrop.zipTu l'extrait directement sur ton repertoire de travail de ton netbeans, ou sous eclipse, et voix ce que tu peut en tirer .

  13. #13
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par mohamine1989 Voir le message
    Non, je suppose que t'as du faire des erreurs de manipulation, ca marche trés bien chez moi, essaye ca, et voix ce que tu peut en tirer . DragNDrop.zipTu l'extrait directement sur ton repertoire de travail de ton netbeans, ou sous eclipse, et voix ce que tu peut en tirer .
    Merci beaucoup , là ça marche , Est ce que c'est possiblie de récupérer l'indice du bouton crée , genre Button [indice ]*. et Est ce que je peux supprimer / modifier (Position ) le boutton .

  14. #14
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    Si tu veut récupérer le bouton a l'indice 'indice' de la table, il existe la méthode get (indice), pour connaitre le nombre d'elements de la table, table.size (), et pour parcourir la table tu peut faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JButton b;
    for (int i = 0; i < tab.size (); i++)
        b = tab.get(i);
    Et enfin, pour modifier la position d'un JButton, il faut mettre myjbutton.setLocation (int x, int y) .
    A+ .

  15. #15
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par mohamine1989 Voir le message
    Si tu veut récupérer le bouton a l'indice 'indice' de la table, il existe la méthode get (indice), pour connaitre le nombre d'elements de la table, table.size (), et pour parcourir la table tu peut faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JButton b;
    for (int i = 0; i < tab.size (); i++)
        b = tab.get(i);
    Et enfin, pour modifier la position d'un JButton, il faut mettre myjbutton.setLocation (int x, int y) .
    A+ .
    Excellent , merci , je vais tester cela
    Sinon , pour faire une suppression d'un bouton ? ,


  16. #16
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    Pour supprimer un bouton du jframe, ou du jpanel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    myjpanel.remove (b);  //Le bouton ne sera plus affiché
    tab.remove (b);    //Supprimer la reference vers le bouton de la table
    b = null;   //Libérer l'espace memoire (RAM ou HDD en cas de pagination).
    myjframe.repaint (); //Actualiser l'affichage
    S'il y a d'autre questions, n'esite pas, A+ .

  17. #17
    Membre régulier
    Profil pro
    Ingénieur
    Inscrit en
    Janvier 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Janvier 2009
    Messages : 209
    Points : 95
    Points
    95
    Par défaut
    Bonjour ,

    Voila j'ai essayé de reprendre le code , mais je pense que mon cas , est un peu complexe , vu que j'ai " jpanel.setLayout(new BorderLayout());" , du coup j'ai mis une toolbar dans la partie "North " et ma map dans la partie "Center " sachant que ma Map , est une class qui hérite d'un JPanel avec un Layout (null ) . Donc ,j'ai essayé de d'appliquer le code sans succés , autre chose , j'ai trouvé la class TransferHandler , une class qui permet de faire des dragNDrop mais je n'ai pas d'exemple concret .

  18. #18
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    Tu n'as qu'a mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jpanel.setLayout (null);
    et ça sera réglé, tu pourra par la suite positionner, repositionner, dimensionner, et redimensionner t'es objets a volonté avec les méthodes setBounds (int x, int y, int widht, int heigth), setLocation (int x, int y), ou encore setSize (int widht, int heigth),et surtout, n'oublie pas, S'il y a des suggestions, je suis preneur.
    A+ .

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

Discussions similaires

  1. découpage class exemple drag and drop
    Par menthol34 dans le forum Tkinter
    Réponses: 11
    Dernier message: 13/07/2012, 12h18
  2. [WD16] Exemple unitaire (WinDev) : Drag and drop
    Par mubbes dans le forum WinDev
    Réponses: 3
    Dernier message: 06/03/2012, 13h17
  3. Exemple de drag and drop
    Par bousnguar dans le forum JSF
    Réponses: 4
    Dernier message: 16/01/2009, 16h43
  4. Faire bouger un clip (simple drag and drop)
    Par yoyot dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 15/12/2007, 20h13
  5. [FLASH 8] Modifier exemple de drag and drop
    Par gerlougir dans le forum Flash
    Réponses: 2
    Dernier message: 20/01/2007, 16h45

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