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 :

Affichage d'un JPane dans un JFrame


Sujet :

AWT/Swing Java

  1. #61
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Bon je ne connais pas Eclipse (j'utilise NetBeans)
    mais je pense qu'il doit avoir une option de run avec debug.
    Essaye de l'exécuter ligne à ligne pour voir où il s'arrête.

    Sinon, place des System.out.println("instruction exécutée") après chaque instruction (méthode de bourin mais bon ...)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  2. #62
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    bon moi je pense que le problème se trouve au niveau de la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comp = (ComposantTransferable) support.getTransferable().getTransferData(ComposantFlavor.getComposantFlavor());
    est ce qu'elle retourne vraiment le composant transféré?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  3. #63
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Es-tu sûr que la ligne est exécutée ?
    modifie ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		try {
    			comp = (ComposantTransferable) support.getTransferable().getTransferData(ComposantFlavor.getComposantFlavor());
    		} catch (UnsupportedFlavorException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    System.out.print("récupéré "+comp.getClass().getName());
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #64
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    de plus voila l'erreur du debug:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
    JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):  [../../../src/share/back/util.c:838]
    rien ne s'affiche après l'ajout de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.print("récupéré "+comp.getClass().getName());
    lors du drop
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  5. #65
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    je crois que j'ai trouvé le problème la variable comp est null donc l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comp = (ComposantTransferable) support.getTransferable().getTransferData(ComposantFlavor.getComposantFlavor());
    n'est pas exécuté
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  6. #66
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Non. La variable est simplement initialisée à null ; ensuite l'instruction est exécutée.
    De mon côté, j'ai la même instruction qui fonctionne parfaitement.
    ajoute @Override avant les deux méthodes comme j'ai expliqué dans le post du 26/09/2012 09h58
    ensuite fait une compilation du code

    je ne comprends toujours pas pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public boolean canimport(TransferHandler.TransferSupport info) { ...
    est écrit avec un "i" minuscule.

    après compilation et ajout du @Override, poste le nouveau code que je puisse le tester de mon côté.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #67
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    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
     
    package monpackage;
    import java.awt.Point;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.io.IOException;
     
    import javax.swing.TransferHandler;
     
    public class DropTransfertHandler extends TransferHandler{
    	@Override
    	public boolean importData(TransferHandler.TransferSupport support){
    		  if(!canImport(support))
    			  return false;
    		  ComposantTransferable comp = null;
    		  		try {
    			comp = (ComposantTransferable) support.getTransferable().getTransferData(ComposantFlavor.getComposantFlavor());
    			System.out.print("récupéré "+comp.getClass().getName());
    		} catch (UnsupportedFlavorException e) {
    			System.out.print(e);
    			e.printStackTrace();
    		} catch (IOException e) {
    			System.out.print(e);
    			e.printStackTrace();
    		}
            // création d'un nouveau composant à partir du clone
            Composant copie = comp.composant.getClone();
     
            //  recuperation de la drop-zone
            DropZone destination = (DropZone) support.getComponent();
     
            //  coordonnées du largage
            Point p = support.getDropLocation().getDropPoint();
     
            copie.x=p.x;
            copie.y=p.y;
            System.out.print("vous avez collé "+copie.nom);
            destination.insert(copie);
    		System.out.print("récupéré "+comp.getClass().getName());
    		return true;
    	}
    	@Override
    	public boolean canImport(TransferHandler.TransferSupport info) {
    		  if (!info.isDataFlavorSupported(ComposantFlavor.getComposantFlavor())) {
    			   return false;
    		   }
    		   return true;
    		}
    }
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  8. #68
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    et ça compile avec le "i" du "canimport" en minuscule ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #69
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    oui puisque dans mon environnement c'est en majuscule
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  10. #70
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Bon, peux-tu re-poster toutes tes classes exactement comme elles sont.
    Je vais les importer dans NetBeans et voir le message d'erreur (ce soir).
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  11. #71
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    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
     
    package monpackage;
    import java.awt.Dimension;
    import java.awt.Image;
    import java.io.Serializable;
    import javax.swing.JPanel;
     
    public class Composant extends JPanel implements Serializable,Cloneable{
    	private static final long serialVersionUID = 1L;
    	public String nom;
    	public int x;
    	public int y;
    	public Image image;
    	public int longueur;
    	public int largeur;
    	public Composant(String no,Image img)
    	{
    		this.nom=no;
    		this.image=img;
    		this.longueur=image.getWidth(null);
    		this.largeur=image.getHeight(null);
    		setPreferredSize(new Dimension(longueur,largeur));
    	}
    	public String getName()
    	{
    		return nom;
    	}
    	public void setPositioon(int px,int py)
    	{
    		x=px;
    		y=py;
    	}
    	public Composant getClone(){
    		//return this.getClone();
    		Composant c=new Composant(nom, image);
    		return c;
    	}
    }
    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
     
    package monpackage;
     
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Iterator;
     
    import javax.swing.JPanel;
    import javax.swing.TransferHandler;
     
    public class ComposantTransferable extends JPanel implements Transferable{
    private DataFlavor img=new DataFlavor("image/png",null);
    public Composant composant;
    public ComposantTransferable(Composant c)
    {
    composant=c;
    setTransferHandler(new ComposantTransfertHandler());
     addMouseListener(new DragAndDropListener());
     setPreferredSize(new Dimension(composant.longueur,composant.largeur));
    }
    public void enableDrag(){
    	addMouseListener(new DragAndDropListener());
    }
    public void paintComponent(Graphics g){
    		super.paintComponent(g);					
    		g.drawImage(composant.image, composant.x, composant.y,composant.longueur,composant.largeur,null);
    }
    	@Override
    	public Object getTransferData(DataFlavor arg0)
    			throws UnsupportedFlavorException, IOException {
    			if(ComposantFlavor.getComposantFlavor().equals(arg0))
    			{
    				return composant;
    			}
    			else throw new UnsupportedFlavorException(arg0);
    	}
     
    	@Override
    	public DataFlavor[] getTransferDataFlavors() {
    		ArrayList l= new ArrayList();
    		l.add(ComposantFlavor.getComposantFlavor());
    		l.add(img);
    		return (DataFlavor[]) l.toArray(new DataFlavor[l.size()]);
    	}
     
    	@Override
    	public boolean isDataFlavorSupported(DataFlavor arg0) {
    		return ComposantFlavor.getComposantFlavor().equals(arg0);
    	}
     
    }
    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
     
    package monpackage;
     
    import java.awt.datatransfer.DataFlavor;
     
     
    public class ComposantFlavor {
    	private static String mimeType = DataFlavor.javaJVMLocalObjectMimeType +
    			";class=" + Composant.class.getName();
    	private static DataFlavor composantFlavor= null;
    	public static DataFlavor getComposantFlavor()
    	{
            try {
                composantFlavor = new DataFlavor(mimeType);
            } catch (ClassNotFoundException e) { }
            return composantFlavor;
    	}
     
    }
    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
     
    package monpackage;
    import java.awt.datatransfer.Transferable;
    import javax.swing.JComponent;
    import javax.swing.TransferHandler;
     
    public class ComposantTransfertHandler extends TransferHandler{
        // ----------------- POUR LE DRAG ---------------------------------------------------------
     
        //  Indication du type de transfert : ici, on ne fait que de la copie (pas de déplacement)
        public int getSourceActions(JComponent c) {
            return COPY;
        }
     
        //  Cette méthode prépare l'objet à tranférer (objet qui doit implémenter Transferable)
        @Override
        public Transferable createTransferable(JComponent c) {
            return (Transferable) c;
        }
    }
    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
     
    package monpackage;
     
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.TransferHandler;
     
    public class DragAndDropListener extends MouseAdapter{
    	public void mousePressed(MouseEvent e){
    		ComposantTransferable ct=(ComposantTransferable)e.getSource();
    		ct.getTransferHandler().exportAsDrag(ct, e, TransferHandler.COPY);
    		e.consume();
    	}
     
    }
    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
     
    package monpackage;
    import java.awt.Point;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.io.IOException;
     
    import javax.swing.TransferHandler;
     
    public class DropTransfertHandler extends TransferHandler{
    	@Override
    	public boolean importData(TransferHandler.TransferSupport support){
    		  if(!canImport(support))
    			  return false;
    		  ComposantTransferable comp = null;
    		  		try {
    			comp = (ComposantTransferable) support.getTransferable().getTransferData(ComposantFlavor.getComposantFlavor());
    			System.out.print("récupéré "+comp.getClass().getName());
    		} catch (UnsupportedFlavorException e) {
    			System.out.print(e);
    			e.printStackTrace();
    		} catch (IOException e) {
    			System.out.print(e);
    			e.printStackTrace();
    		}
            // création d'un nouveau composant à partir du clone
            Composant copie = comp.composant.getClone();
     
            //  recuperation de la drop-zone
            DropZone destination = (DropZone) support.getComponent();
     
            //  coordonnées du largage
            Point p = support.getDropLocation().getDropPoint();
     
            copie.x=p.x;
            copie.y=p.y;
            System.out.print("vous avez collé "+copie.nom);
            destination.insert(copie);
    		System.out.print("récupéré "+comp.getClass().getName());
    		return true;
    	}
    	@Override
    	public boolean canImport(TransferHandler.TransferSupport info) {
    		  if (!info.isDataFlavorSupported(ComposantFlavor.getComposantFlavor())) {
    			   return false;
    		   }
    		   return true;
    		}
    }
    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
     
    package monpackage;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Point;
    import java.awt.datatransfer.DataFlavor;
    import java.util.ArrayList;
    import java.util.Iterator;
     
    import javax.swing.JPanel;
    import javax.swing.TransferHandler;
     
    public class DropZone extends JPanel{
    	ArrayList<Composant> liste;
    	public DropZone()	{
    		setTransferHandler(new DropTransfertHandler());
    		this.setBackground(Color.white);
    		setLayout(null);
    		liste=new ArrayList<>();
    	}
    	public void insert(Composant c){
    		liste.add(c);
    		repaint();
    	}
    	public void paintComponent(Graphics g){
    		super.paintComponent(g);
    		for(Iterator<Composant> it=liste.iterator();it.hasNext();)
    		{
    			Composant ce=(Composant)it.next();
    			g.drawImage(ce.image,ce.x,ce.y,ce.longueur,ce.largeur,null);
    		}
    	}
    }
    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
     
    package monpackage;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.util.ArrayList;
    import java.util.Iterator;
     
    import javax.swing.JPanel;
     
    public class PanneauComposant extends JPanel{
    	ArrayList<ComposantTransferable> listecomp;
    	public PanneauComposant(){
    		listecomp=new ArrayList<>();
    		//setBackground(Color.white);
     
    	}
    public void ajouterComposant(ComposantTransferable c){
    	listecomp.add(c);
    	for(Iterator<ComposantTransferable> it=listecomp.iterator();it.hasNext();)
    	{
    		ComposantTransferable ce=(ComposantTransferable)it.next();
    		ce.setBounds(ce.composant.x, ce.composant.y,ce.composant.longueur,ce.composant.largeur);
    		add(ce);
    	}
    }
    }
    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
    60
    61
    62
    63
    64
    65
    66
     
    package monpackage;
     
    import java.awt.BorderLayout;
    import java.awt.Image;
    import java.awt.Point;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import java.awt.Dimension;
     
    public class Acceuil extends JFrame {
     
    	private static final long serialVersionUID = 1L;
    	private JPanel jContentPane = null;
     
    	/**
             * This is the default constructor
             * @throws IOException 
             */
    	public Acceuil() throws IOException {
    		super();
    		initialize();
    	}
     
    	/**
             * This method initializes this
             * 
             * @return void
             * @throws IOException 
             */
    	private void initialize() throws IOException {
    		this.setSize(1000, 550);
    		this.setContentPane(getJContentPane());
    		this.setTitle("JFrame");
    	}
     
    	/**
             * This method initializes jContentPane
             * 
             * @return javax.swing.JPanel
             * @throws IOException 
             */
    	private JPanel getJContentPane() throws IOException {
    		if (jContentPane == null) {
    			jContentPane = new JPanel();
    			jContentPane.setLayout(new BorderLayout());
    			Image image = ImageIO.read(Acceuil.class.getResource("/composants/lignes.png"));
    			Composant c=new Composant("texte", image);
    			PanneauComposant pc = new PanneauComposant();
    			ComposantTransferable cp=new ComposantTransferable(c);
    			pc.ajouterComposant(cp);
    			DropZone dz=new DropZone();
    			dz.setPreferredSize(new java.awt.Dimension(500,500));
    			pc.setPreferredSize(new java.awt.Dimension(300,500));
    			pc.add(c, null);
    			//dz.insert(c);
    			jContentPane.add(pc,BorderLayout.WEST);
    			jContentPane.add(dz,BorderLayout.CENTER);
    		}
    		return jContentPane;
    	}
     
    }  //  @jve:decl-index=0:visual-constraint="14,15"
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  12. #72
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Je n'ai pas trouvé comment tu fais pour démarrer l'application.
    Il faut que dans une de tes classes il y ait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static void main(String args[]) {
        .... le code qui lance l'application
    }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  13. #73
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    c'est la classe acceuil qui lance l'application donc c'est elle qui contient le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public static void main(String args[]) {
        .... le code qui lance l'application
    }
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  14. #74
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Ah bon ? j'ai beau regarder dans le code de la classe, je ne vois pas la méthode main
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  15. #75
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    désolé rectification:
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    package monpackage;
     
    import java.awt.BorderLayout;
    import java.awt.Image;
    import java.awt.Point;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import java.awt.Dimension;
     
    public class Acceuil extends JFrame {
     
    	private static final long serialVersionUID = 1L;
    	private JPanel jContentPane = null;
     
    	/**
             * This is the default constructor
             * @throws IOException 
             */
    	public Acceuil() throws IOException {
    		super();
    		initialize();
    	}
    public static void main(String args[]){
    	try {
    		new Acceuil();
    	} catch (IOException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    }
    	/**
             * This method initializes this
             * 
             * @return void
             * @throws IOException 
             */
    	private void initialize() throws IOException {
    		this.setSize(1000, 550);
    		this.setContentPane(getJContentPane());
    		this.setTitle("JFrame");
    	}
     
    	/**
             * This method initializes jContentPane
             * 
             * @return javax.swing.JPanel
             * @throws IOException 
             */
    	private JPanel getJContentPane() throws IOException {
    		if (jContentPane == null) {
    			jContentPane = new JPanel();
    			jContentPane.setLayout(new BorderLayout());
    			Image image = ImageIO.read(Acceuil.class.getResource("/composants/lignes.png"));
    			Composant c=new Composant("texte", image);
    			PanneauComposant pc = new PanneauComposant();
    			ComposantTransferable cp=new ComposantTransferable(c);
    			pc.ajouterComposant(cp);
    			DropZone dz=new DropZone();
    			dz.setPreferredSize(new java.awt.Dimension(500,500));
    			pc.setPreferredSize(new java.awt.Dimension(300,500));
    			pc.add(c, null);
    			//dz.insert(c);
    			jContentPane.add(pc,BorderLayout.WEST);
    			jContentPane.add(dz,BorderLayout.CENTER);
    		}
    		return jContentPane;
    	}
     
    }  //  @jve:decl-index=0:visual-constraint="14,15"
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  16. #76
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Ce n'est pas le code que tu utilises car ton JFrame Acceuil ne s'affiche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static void main(String args[]){
    	try {
    		new Acceuil();   // n'affiche pas
    	} catch (IOException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  17. #77
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    si chez moi j'ai même eu besoin de mettre la méthode main
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  18. #78
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    remplace donc par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Acceuil().setVisible(true);
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  19. #79
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    En passant puisque pour l'instant je peux ajouter les composants manuellement tu peux me donner les indications pour la suit?
    a savoir:
    - comment déplacer un composant sur le dropzone
    - comment relier les composants
    - comment gérer les événements sur les composants (clic, sélection,...)
    comme sa on avance un peux car depuis un bout on bloc et j'aimerais un peux avancer s'il te plait on trouvera la solution en chemin je pense.
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  20. #80
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Voilà la classe DropTransfertHandler qui correspond aux autres classes de ton application.
    Je n'avais pas la même version que toi des autres classes (que j'avais un peu remaniées à ma sauce)
    C'est pourquoi je t'ai demandé de poster toutes les classes.

    La confusion venait de l'utilisation de ComposantTransferable au lieu de Composant

    Les lignes à corriger sont en rouge, les corrections sont en vert.
    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
    package monpackage;
    import java.awt.Point;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.io.IOException;
    
    import javax.swing.TransferHandler;
    
    public class DropTransfertHandler extends TransferHandler{
    	@Override
    	public boolean importData(TransferHandler.TransferSupport support){
    		  if(!canImport(support))
    			  return false;
    //		  ComposantTransferable comp = null;        // ANCIENNE LIGNE
    		  Composant comp = null;                    // MODIFICATION
    		  		try {
    //			comp = (ComposantTransferable) support.getTransferable().getTransferData(ComposantFlavor.getComposantFlavor()); // ANCIENNE LIGNE
    			comp = (Composant) support.getTransferable().getTransferData(ComposantFlavor.getComposantFlavor());             // MODIFICATION
    			System.out.print("récupéré "+comp.getClass().getName());
    		} catch (UnsupportedFlavorException e) {
    			System.out.print(e);
    			e.printStackTrace();
    		} catch (IOException e) {
    			System.out.print(e);
    			e.printStackTrace();
    		}
            // création d'un nouveau composant à partir du clone
    //        Composant copie = comp.composant.getClone();  // ANCIENNE LIGNE
            Composant copie = comp.getClone();              // MODIFICATION
    
            //  recuperation de la drop-zone
            DropZone destination = (DropZone) support.getComponent();
    
            //  coordonnées du largage
            Point p = support.getDropLocation().getDropPoint();
    
            copie.x=p.x;
            copie.y=p.y;
            System.out.print("vous avez collé "+copie.nom);
            destination.insert(copie);
    		System.out.print("récupéré "+comp.getClass().getName());
    		return true;
    	}
    	@Override
    	public boolean canImport(TransferHandler.TransferSupport info) {
    		  if (!info.isDataFlavorSupported(ComposantFlavor.getComposantFlavor())) {
    			   return false;
    		   }
    		   return true;
    		}
    }
    par ailleurs, ajoute dans la classe Acceuil :
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    dans le constructeur
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 9 PremièrePremière 12345678 ... DernièreDernière

Discussions similaires

  1. Problème d'affichage d'un JPanel dans un JFrame.
    Par Patrick95500 dans le forum Agents de placement/Fenêtres
    Réponses: 8
    Dernier message: 18/09/2014, 13h51
  2. Affichage d'un JLabel dans une JFrame
    Par Christophe39 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 17/02/2014, 13h41
  3. Affichage de différents JPanel dans une JFrame
    Par PROJECT-AURORA dans le forum Débuter
    Réponses: 13
    Dernier message: 16/11/2013, 11h22
  4. Ajout et affichage d'un JPanel dans une JFrame lorsqu'un évènement se produit
    Par bilou_12 dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 27/03/2012, 20h27
  5. [pdf][jframe] affichage d'un PDF dans un JFrame
    Par r.matha dans le forum Documents
    Réponses: 3
    Dernier message: 06/10/2006, 15h00

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