J2SE API [Résolu]

Signaler
Messages postés
6
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
25 octobre 2007
-
Messages postés
6
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
25 octobre 2007
-
Salut, je m'essaye au drag n drop mais mon code marche pas, quelqu'un pourrai m'aider ?
J'ai fait le code le plus simple possible.
C'est peut etre juste l'ecouteur qui foire, mais je me suis dit que j'allais tester le MouseAdapter du meme coup...

2 classes : la frame et le glasspane
________________________________________________________________

________________________________________________________________
________________________________________________________________
________________________________________________________________

public class Charm extends JFrame{

    MouseAdapter ecoute;
   
    public Charm() {
       
        this.setSize(600, 480);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
       
        ecoute=new MouseAdapter(){
           
            public void mouseClicked(MouseEvent me){
                System.out.println("clic");
            }
           
            public void mousePressed(MouseEvent arg0) {
                System.out.println("Pression souris");
            }
        };
        this.addMouseListener(ecoute);
        this.addMouseMotionListener(ecoute);
       
        this.setGlassPane(new MonGlassPane());
    }

    public static void main(String[] args) {
        Charm c = new Charm();
        c.setVisible(true);
    }

}
________________________________________________________________

________________________________________________________________
________________________________________________________________

________________________________________________________________

public class MonGlassPane extends JComponent{

    MouseAdapter ecoute;
   
    public MonGlassPane(){
        ecouter();
    }
   
    public void ecouter(){
        ecoute=new MouseAdapter(){
            public void mouseReleased(MouseEvent arg0) {
                System.out.println("Relachement de souris");
            }
        };
    }
}

9 réponses

Messages postés
6
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
25 octobre 2007

Ouai je sais j'avais vu ce tuto, mais je voulais surtout comprendre le fonctionnement, la le code source est tellement gros que c'est vraiment l'enfer de tout lire sans s'endormir

C'est pour ca que je m'en suis tenté un ultra simplifié..

Je continu a chercher ;)
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
12
Salut,

Tu aurais dû poster sur javafr.com.

Quel est ton problème exactement ?
Que souhaites tu faire ?
"Le code ne marche pas" : cela ne nous avance pas.

Idem, le titre de ton topic n'est pas très explicite.

Sur cette ligne :
this.addMouseMotionListener(ecoute);

addMouseMotionListener attend une instance de MouseLitener, pas de MouseAdapter.

J'oubliais : bienvenue !
<hr width="100%" size="2" />
3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
Messages postés
6
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
25 octobre 2007

Bah j'ai aucune erreure affichée, mais ca fait rine du tout
c'est sensé afficher "presison souris" quand je presse, et "relache souris" quand je relache...

ok pour le MouseAdapter, mais alors il sert a quoi le mouseAdapter si jpeut pas l'ajouter comme ecouteur ?
Pour moi l'avantage ct de pas avoir a ré-écrire toutes les methodes que j'utilise pas forcement.
Y un autre facon de l'ajouter ?

bhouhou :( je suis un peu perdu
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
12
Bah j'ai fait un copier coller de ton code, j'ai mis en commentaire la ligne this.addMouseMotionListener(ecoute); ,  j'ai compilé, executé.


Ca m'a affiché une fenêtre. Quand je cliquais dessus, ça me mettais un
message dans la sortie standart (Un lors de l'appuie, et un lors du
relachement).


MouseAdapter "écoute" les appuis et relachements de souris.

<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
Messages postés
6
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
25 octobre 2007

yes, merci pour ca :)

maintenant la pression marche
mais le glasspane toujours pas :
ca m'affiche le pression, mais pas le relachement...

public class Charm extends JFrame{

    MouseAdapter ecoute;
  
    public Charm() {
      
        this.setSize(600, 480);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
      
        ecoute=new MouseAdapter(){
            public void mousePressed(MouseEvent arg0) {
                System.out.println("Pression souris");
            }
        };
        this.addMouseListener(ecoute);

        this.setGlassPane(new MonGlassPane());
    }

    public static void main(String[] args) {
        Charm c = new Charm();
        c.setVisible(true);
    }

}

________________________________________________________________

public class MonGlassPane extends JComponent{

    MouseAdapter ecoute;
  
    public MonGlassPane(){
        ecouter();
        this.addMouseListener(ecoute);
    }
  
    public void ecouter(){
        ecoute=new MouseAdapter(){
            public void mouseReleased(MouseEvent arg0) {
                System.out.println("Relachement de souris");
            }
        };
    }
}

j'oubli un truc ?
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
12
En fait, je ne sais pas à quoi il sert ton GlassPane :
import java.awt.event.*;
import javax.swing.*;

public class Charm extends JFrame {

// Instance de récupération des évènements souris
MouseAdapter ecoute;

public Charm() {
this.setSize(600, 480);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);

// On instancie une classe de gestion des évènement souris
ecoute = new MouseAdapter() {
// Evènement de pression
public void mousePressed(MouseEvent arg0) {
System.out.println("Pression souris");
}

// Evenement d'appui
public void mouseReleased(MouseEvent arg0) {
System.out.println("Relachement de souris");
}
};

// On met en place l'instance que l'on vient de créer pour
// qu'elle intercepte les évènements souris de notre JFrame.
this.addMouseListener(ecoute);
}

public static void main(String[] args) {
Charm c = new Charm();
c.setVisible(true);
}
}

<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
Messages postés
6
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
25 octobre 2007

Ha oui mais ca d'accord ;)

Mon but a l'origine c'etait d'utiliser le drag'n drop via glass pane
rootpane--je presse--> glasspane--je relache-->rootpane

donc je met un ecouteur sur chaque avec un mousePressed sur la Frame de base, et un mouseRelease sur le GlassPane
mais apparement c pas comme ca que ca marche :(

J'ai voulu faire cet exemple super simple car j'ai celui de Sun ultra bourrin de complexité...

A terme, une fois que ca aurai marché, j'aurai rajouté des Panel et de la transparence, mais la pour commencer j'ia voulu faire super simple (trop ?)
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
12
Ah ok, tu veux faire comme sur ce tuto. La version anglaise est plus complète d'ailleurs.


Fonctionnellement, je ne suis pas sûr qu'il faille que ton MouseAdapter
travail sur ton GlassPan. Car ça à l'air d'être le bordel pour qu'il
récupère les évènements souris.


Normalement, il n'y a que le composant qui a le focus qui récupère les touches pressées, et la gestion du focus à l'air pas franchement évdente. Par exemple, la méthode isManagingFocus est deprecated.

Des bugs ont en plus été reportés sur le sujet. (Le code de cette page se rapproche beaucoup du tien)


Tu peux peut être essayer d'utiliser les classes du premier tuto, style
GhostComponenentAdapter, pour te simplifier la vie (Si elle marche...).

<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
Messages postés
6
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
25 octobre 2007

et merci beaucoup pour tes précisions et conseil ;)