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] qu'est ce qui ne va pas ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut [Drag and Drop] qu'est ce qui ne va pas ?
    Bonjour, je suis débutante en Drag and Drop j'ai donc pris un tutaorial et essayer d'appliqué sur mon application mais visiblement y a un truc que je ne fais pas ou pas bien ...

    je veux drag and dropé un JPanel

    j'ai commencé par le drag qui ne semble pas marcher :

    j'ai fait un transferable
    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
     
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
    import java.awt.datatransfer.UnsupportedFlavorException;
    import java.io.IOException;
     
     
    public class ViewPaneTransferable implements Transferable{
     
    	private GeneralViewPanel _pane;
    	private DataFlavor _paneFlavor;
    	DataFlavor[] _flavors;
     
    	ViewPaneTransferable(GeneralViewPanel pane)
    	{
    		_pane = pane;
    		try {
    			String MIME = DataFlavor.javaJVMLocalObjectMimeType + ";class="+ _pane.getClass().getName();
    			_paneFlavor =  new DataFlavor(MIME);
    			_flavors = new DataFlavor[2];
    			_flavors[0] =_paneFlavor;
    			_flavors[1] = DataFlavor.stringFlavor;
     
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
    	public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException{
    		if ( _paneFlavor.equals(flavor)) return _pane;
    		else 	return "Not Here !";
    	}
     
    	public DataFlavor[] getTransferDataFlavors() {	
    		return _flavors;
    	}
     
    	public boolean isDataFlavorSupported(DataFlavor flavor) {
    		// TODO Auto-generated method stub
    		for (int i = 0; i< _flavors.length; i++)
    		{
    			if (_flavors[i].equals(flavor)) return true;
    		}
    		return false;
    	}
    }
    un transferHandler
    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
     
    import java.awt.datatransfer.DataFlavor;
    import java.awt.datatransfer.Transferable;
     
    import javax.swing.JComponent;
    import javax.swing.TransferHandler;
     
     
    public class ViewPaneTransferHandler extends TransferHandler{
     
    	private static final long serialVersionUID = 46L;
     
    	protected Transferable createTransferable(JComponent c)
    	{
    		System.out.println("creation transferable !");
    		GeneralViewPanel pane = (GeneralViewPanel)c;
    		return new ViewPaneTransferable(pane);
    	}
     
    	public int getSourceActions(JComponent c)
    	{
    		System.out.println("bouh ?");
    		return COPY_OR_MOVE;	
    	}
    }
    et un listener sur mon panel (tout en bas)
    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.TransferHandler;
     
     
     
    public class GeneralViewPanel extends JPanel{
     
    	JButton _viewState;
    	HeaderPan _header;
    	Container _parent;
    	boolean _open;
    	GeneralViewPanel _me;
    	JPanel _ToolPan;
    	JLabel  _title;
    	int _height;
    	private static final long serialVersionUID = 29L;
     
    	GeneralViewPanel(JPanel ToolPan, Container parent)
    	{
    		super();
    		_parent = parent;
    		_open = true;
    		_me = this;
    		_height = 400;
    		_title = new JLabel("toto");
    		_ToolPan = ToolPan;
    		this.setLayout(null);
    		_viewState = new JButton("-");
    		this.add(_viewState);
    		_viewState.addActionListener(new ViewListener());
     
    		_header = new HeaderPan();
    		this.add(_header);
     
    		this.add(ToolPan);
     
     
    		//this.setSize(parent.getWidth(), 200);
    	}
     
     
    	public void setHeight(int newHeight)
    	{
    		if (newHeight>150)
    			_height = newHeight;
    		else _height = 150;
    		this.repaint();
    	}
     
    	class ViewListener implements ActionListener
    	{
    		public void actionPerformed(ActionEvent e)
    		{
    			if (_open)
    			{
    				_open = false;
    				_viewState.setText("+");
    				_me.setSize(_parent.getWidth(), 25);
    			}
    			else
    			{
    				_open = true;
    				_viewState.setText("-");
    				_me.setSize(_parent.getWidth(), _height);
    			}
    		}
    	}
     
     
    	public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    	if (_open)	
    		this.setSize(_parent.getWidth(), _height);
    	else
    		this.setSize(_parent.getWidth(), 25);
    	_ToolPan.setBounds(0, 25, this.getWidth(), this.getHeight()-25);
    	_viewState.setBounds(this.getWidth()-51,2,50,20);
    		_header.setBounds(0, 0, this.getWidth()-52, 25);
    	}
     
     
    	private class HeaderPan extends JPanel
    	{
    		private static final long serialVersionUID = 30L;
    		HeaderPan()
    		{
    			super();
     
    			this.setBackground(new Color(154,192,205));
    			this.add(_title);
    			this.addMouseListener(new DragAndDropPane());
    			this.setTransferHandler(new ViewPaneTransferHandler());
    		}
     
    		public class DragAndDropPane extends MouseAdapter
    		{
    			public void mousePressed(MouseEvent e)
    			{
    				System.out.println("bouh");	((HeaderPan)e.getSource()).getTransferHandler().exportAsDrag(_me, e, TransferHandler.COPY);
    			System.out.println(	((HeaderPan)e.getSource()).getTransferHandler());
    				e.consume();
    			}
    		}
    	}
    }
    visiblement la méthode createTransferable n'est jamais appelée .. elle devrais l'être non ? (j'essaye de comprendre comment marche la dnd ... enfin voila si vous voyez ce qui cloche ...

  2. #2
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    Je remonte ! ... je n'arrive toujours pas a faire du drag and drop, le tutauriel sun ne m'apprenans pas vraiment plus que ce que j'ai fait déjà ... (j'ai quand même su mal avec le tutoriel sun j'avoue)

  3. #3
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    remonte une dernière fois ... personne ne repondera a mon appel au secoursssssssss ???






  4. #4
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Tu ne peux pas dragger un JPanel... La liste des composants draggable (et possédant donc une méthode pour activer cette propriété : setDragEnabled()) se trouve ici :

    http://java.sun.com/docs/books/tutor...dnd/intro.html

  5. #5
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Par défaut
    Citation Envoyé par Claythest
    Tu ne peux pas dragger un JPanel... La liste des composants draggable (et possédant donc une méthode pour activer cette propriété : setDragEnabled()) se trouve ici :

    http://java.sun.com/docs/books/tutor...dnd/intro.html
    on peut tout dragger si on veux .. il faut juste l'implémenter pour les component pas prévu .. et ca marche finalement ... en tout cas sous window .. je pense que de toute facon mon installation VM au boulot est totallement bugger .. je n'arrivais pas a faire tourné trop de chose pour que ce soit juste un problème de code (genre ancien programme marchant partout ailleurs, L&F (aucun ne m'archais), ...)

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

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. Réponses: 3
    Dernier message: 05/11/2011, 11h26
  3. Drag-and-drop qui laisse une jolie trainée
    Par Aegehn dans le forum MFC
    Réponses: 6
    Dernier message: 15/03/2009, 18h39
  4. Savoir ou est deposé un fichier dans un drag and drop ?
    Par mkdual dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 24/08/2005, 17h52
  5. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

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