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 :

Ajout de la fonction "paste" à un JComponent


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 46
    Par défaut Ajout de la fonction "paste" à un JComponent
    Bonjour à tous,

    j'ai créé une petite appli qui se contente d'afficher 2 images dans 2 Jlabels dfferents et permet la copie de l'un vers l'autre grâce à un transferHandler écrit par mes soins.

    le DnD(drag and drop) à la souris fonctionne trés bien.

    Mais je voudrais rajouter la possibilité de coller une image venant du presse papier grâce à un "ctrl+V"

    pour cela j'ajoute ces deux lignes de code qui devrait suffir, mais ca ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    label1.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK), "paste");
    label1.getActionMap().put("paste", TransferHandler.getPasteAction());
    Je sais que normalement les Jlabel ne sont pas utilisés pour être séléctionné et donc copier des choses dedans donc j'ai essayé sur un JTextField egalement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    textField.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK), "paste");
    textField.getActionMap().put("paste", TransferHandler.getPasteAction());
    je lance l'appli fait un "ctrl+c" sur du texte dans un editeur, me place dans le JTextField et fais "ctrl+v". mais rien ne se passe...

    aurais je looper une étape?

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 46
    Par défaut
    personne pour m'aider?

  3. #3
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    repeindre le textField après modification, je crois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTextField.repaint();
    oui ?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je ne sais pas comment fonctionne le "TransferHandler.getPasteAction()", mais pour recevoir l'action le JLabel doit avoir le focus... ce qui n'est pas le cas lorsqu'on clique dessus...

    Essayes de forcer le focus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	label.addMouseListener(new MouseAdapter() {
    		@Override
    		public void mouseClicked(MouseEvent e) {
    			e.getComponent().requestFocusInWindow();
    		}
    	});
    a++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 46
    Par défaut
    D'abord merci pour vos reponses^^

    @Fraco: je ne pense pas que le repaint change quelquechose ici car dans le cas du JLabel la copie depuis et vers un autre element par le DnD marche correctement...je pensais justement à un soucis de focus comme en parle AdiGuba.

    @Adiguba : j'avais justement tenté de de contourner ce probleme de focus en forcant la selection d'1 des 3 InputMap à savoir la "WHEN_IN_FOCUSED_WINDOW" avec les lignes de code suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    label1.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK), "paste");
    Mais ca ne fonctionnait pas, je vais essayer ta solution, je ne savais pas comment donner le focus directement au JLabel

    Merci pour votre aide!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 46
    Par défaut
    Bonjour ^^

    Bon ben j'ai essayé mais ca ne fonctionne toujours pas...

    et je ne sais plus trop ou chercher

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