Java

Résolu
boudenmo Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   -
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:

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) {
}

}
A voir également:

3 réponses

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
J'imagine que tu as reponpé ce code quelque part puisque tu ne semble pas savoir t'en servir...

Pour faire ce que tu veux, je pense qu'il te suffit de modifier la méthode "createCopy" pour qu'elle accepte en paramètre le chemin d'accès à l'image qui sera affichée, ainsi que les coordonées ou tu souhaite la mettre.

Voici le code modifier :
public void createCopy( int x, int y, String theImagePath){// créé une nouvelle copie de l'image
   label[nbCopie]=new JLabel(new ImageIcon(theImagePath));
   //initialise l'image
   label[nbCopie].setBounds(x,y,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
}



Il te suffit ensuite d'appeller ta méthode pour chaque image que tu souhaite ajouter.
0
boudenmo Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai effectivement modifier un code que j'ai trouvé!
Je suis débutant en java et je dois réaliser un logiciel dans le cadre d'un stage, c'est pour cela que je demande de l'aide.
J'aimerai pouvoir supprimer chaque éléments glisser sur la fenêtre, comment pourais je proceder?
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
Tu as plusieurs solutions pour résoudre ce problème.
Tu peux :
- soit gérer une évênement sur ton image (onclick par exemple), avec l'éxécution d'une méthode qui supprimer l'image du content et raffrachit par la suite ton interface.
- soit un système de stockage dans un tableau d'objet concordant avec tes images (chemin d'acces à l'image, coordonées, etc.), et une méthode qui supprime de ton tableau l'élément choisi, puis re-affiche toutes tes images sur ton interface et raffraichit l'ensemble.

Je ne sais pas si tu vois ce que je veux dire, mais l'idée est là.
Bon courage.
0