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 avec image.


Sujet :

AWT/Swing Java

  1. #1
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut Drag and Drop avec image.
    Bonjour à tous,

    j'essaie, pour une opération de Drag&Drop dans swing d'associer une image.

    Normalement, il suffit de passer une image à la méthode DragGestureEvent.startDrag.

    Mais voilà, rien à faire, je n'ai que l'image par défaut de windows indiquant un drag en cours (curseur + petit rectangle pointillé avec un +).

    Voilà le code que j'utilise, pourriez vous me dire ce qui manque? Notez que j'ai sauvé l'image dans un fichier à part pour confirmer que l'image n'était pas vide. J'ai bien la bonne image dans le fichier


    Vu que je ne trouve pas de doc (ou pas les bons mots clés) sur le net, j'en appelle à vos connaissance

    Je précise que le drag and drop, en lui même, fonctionne. Juste l'image ne s'affiche pas .


    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
    		DragSource dragSource = DragSource.getDefaultDragSource();
    		dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY, new DragGestureListener() {
     
    			@Override
    			public void dragGestureRecognized(DragGestureEvent dge) {
    				Transferable t = new Transferable() {
    					DataFlavor[] tr ;
    					{
    						try{
    							tr = new DataFlavor[] {new DataFlavor(NODE_MIME_TYPE)};
    						} catch(ClassNotFoundException e){
    							e.printStackTrace();
    						}
    					}
    					@Override
    					public boolean isDataFlavorSupported(DataFlavor flavor) {
    						log.debug("Got mimetype {}",flavor.getMimeType());
    						return flavor.getMimeType().split(";")[0].equals(NODE_MIME_TYPE);
    					}
     
    					@Override
    					public DataFlavor[] getTransferDataFlavors() {
    						return tr;
    					}
     
    					@Override
    					public Object getTransferData(DataFlavor flavor)
    							throws UnsupportedFlavorException, IOException {
    						if (isDataFlavorSupported(flavor)){
    							return NodeSource.this;
    						}
    						throw new UnsupportedFlavorException(flavor);
    					}
    				};
    				BufferedImage bi = new BufferedImage(64,64, BufferedImage.TYPE_INT_RGB);
    				bi.getGraphics().drawImage(svgIcon.getBufferedImage(),0,0,null);
    				try {
    					File createTempFile = File.createTempFile("test", ".jpeg");					
    					ImageIO.write(bi, "JPEG", createTempFile);
    					Desktop.getDesktop().browse(createTempFile.toURI());
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    				dge.startDrag(null, bi,new java.awt.Point(0,0),t,null);
    			}
    		});

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Visiblement, c'est une feature qui n'était implémentée que sur mac os x jusque java 7


    http://bugs.sun.com/bugdatabase/view...bug_id=4874070

    Je lance mon application avec un java 7 et ça marche

    Mais biensûr, le plugin maven pour le weaving spring ne marche pas encore avec java7, histoire de bien me faire ch****


    Si quelqu'un a une option obscure sous java 6 pour activer cette fonctionnalité, qu'il me fasse signe.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Il y a un très bon article de Romain Guy (Android) sur ce site qui explique comment associer une image au DND : http://gfx.developpez.com/tutoriel/java/swing/drag/
    Je l'ai utiliser sur un projet perso il y a quelques années, c'est assez simple à mettre en place. Par contre, dans la conclusion, il mentionne de potentiels problèmes de performance. L'article date de 2006, il ne sont peut-être plus d'actualité (PC plus puissant).

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Oui, le glasspane, c'est la technique à l'ancienne, mais ça a ses limite: on est contraint à rester dans la même fenêtre. Les performances ne sont pas toujours au rendez-vous, etc.

    De toutes façons, en java 7 ça marche directement avec l'OS

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

Discussions similaires

  1. Drag and drop avec image pendant le drag
    Par WG614 dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/03/2009, 06h17
  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. Drag and drop d'images
    Par PrinceMaster77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 31/05/2006, 21h53
  5. "Drag and drop" avec directinput
    Par batosai dans le forum DirectX
    Réponses: 1
    Dernier message: 16/06/2004, 16h48

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