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

AWT/Swing Java Discussion :

drag and drop, affichage liste images


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 16
    Points
    16
    Par défaut drag and drop, affichage liste images
    Bonjour,
    J'aimerai créer un logiciel du type visio, c'est à dire avoir une liste d'éléments à ma gauche et faire du drag and drop afin de déssiner des organigrammes.
    Pour l'instant j'ai créer une classe gr qui m'affiche bien une image (alternative.jpg) au position 0,0 et j'aimerai ajouter plusieurs autres images par exemple comme un tableau de 2colonnes et plusieurs lignes pour les différents éléments mais je n'ai pas réussit à afficher ma deuxième image à la position 0,100 par exemple.
    Est ce que vous pouriez m'aider:

    Voici mon code:
    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
    53
    54
    55
    56
    57
    58
    59
     
    import java.awt.Event;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
     
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JLayeredPane;
    import javax.swing.JPanel;
     
    public class gr extends JFrame implements MouseMotionListener{
    JLabel[] label = new JLabel[100]; //Copies de l'image
    JPanel p ;//notre panel principal qui contient les images
    int nbCopie=0;//nombre de copies existantes
     
    public gr(){//constructeur qui créé la fenetre principale
    super("titre");
    p = new JPanel(null);
    createCopy(); //on ajoute une copie au panel
    this.getContentPane().add(p);
    this.setSize(800,600);
    this.setVisible(true);
    }
     
    public static void main(String[] args) {
    new gr();
    }
     
     
    public void createCopy(){// créé une nouvelle copie de l'image
        label[nbCopie]=new JLabel(new ImageIcon("alternative.jpg"));
        //initialise l'image
        label[nbCopie].setBounds(0,0,120,160); // initialise sa position aux coordonnéees 0,0
        label[nbCopie].addMouseMotionListener(this);//ajoute un mousemotionlistener pour détecter le drag n drop
        p.add(label[nbCopie]);//on ajoute la copie au panel
        p.repaint();//on redessine le panel
        nbCopie++; //incrémente le nombre de copies existantes
        }
     
        public void mouseDragged(MouseEvent e) {
        //lorsque qu'on fais du drag n drop sur une copie
     
        //si la derniere copie créé a été bougée (coordonnées 0,0),
        //on en créé une nouvelle qui sert de modele
        if (label[nbCopie-1].getX() != 0 && label[nbCopie-1].getY()!=0) createCopy();
     
        JLabel temp=(JLabel)e.getSource();
        //créé une référence vers la copie sur laquelle on a cliqué
     
        temp.setBounds(temp.getX()+e.getX()-60,temp.getY()+e.getY()-80,120,160);
        //déplace la copie sur laquelle je fais du drag n drop
        }
     
        public void mouseMoved(MouseEvent e) {
        }
     
    }

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    pour afficher les images dans un tableau de 2 colonnes et plusieurs lignes, tu peux utiliser un GridLayout.
    Ensuite, il faut bien prendre soin d'initialiser toutes les images en utilisant une boucle (for par exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    JPanel p = new JPanel(new GridLayout(0, 2));
    // 0 : nombre indéfini de lignes
    // 2 : seulement deux colonnes
     
    // On ajoute les images
    for(int nbCopie = 0; nbCopie < label.length; nbCopie++) {
        // la c'est ton code
     
        label[nbCopie]=new JLabel(new ImageIcon("alternative.jpg"));
        //initialise l'image
        label[nbCopie].addMouseMotionListener(this);//ajoute un mousemotionlistener pour détecter le drag n drop
        p.add(label[nbCopie]);//on ajoute la copie au panel
    }
    L'appel à setBounds est inutile puisqu'on utilise un LayoutManager qui s'en occupe à notre place.
    L'appel à repaint n'est pas nécessaire, le JPanel comprend qu'on lui ajoute un composant et se redessine tout seul.

Discussions similaires

  1. Drag and Drop sur une image avec coordonnées générées
    Par psgman113 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 28/04/2009, 21h58
  2. [SWT/JFACE] Drag and drop avec une image sur le curseur
    Par soft-war dans le forum SWT/JFace
    Réponses: 5
    Dernier message: 30/07/2008, 13h01
  3. Réponses: 6
    Dernier message: 18/12/2007, 09h16
  4. Empecher le drag and drop d'une image
    Par gwen_oc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 23/08/2007, 10h55
  5. drag and drop d'une image d'une page web lancée depuis un webbroswer
    Par chrisledeveloppeur2 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 02/01/2007, 15h33

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