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

Interfaces Graphiques en Java Discussion :

petit problème de transfert d'événement souris


Sujet :

Interfaces Graphiques en Java

  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 petit problème de transfert d'événement souris
    Bonjour (ou re lol)

    Alors j'ai un problème d'ecouteur de soursis:

    J'ai deux panel transaprent l'un au dessus de l'autre

    l'un ecoute sur la totaliter de sa taille les clic et drag de la souris, l'autre a juste ajouter sur lui des micro panel qui on un ToolTipText.

    Bien sur le panel ecoutant toute sa surface recupère tout les evenement et je ne sait pas comment les transmettre jusqu'a mes microPanel .

    Un peu de code peut être :

    le listener de mon panel ecoutant sur tout la surface :
    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
     
    	class BAAreaClicListener implements MouseListener
    	{
    		public void mouseClicked(MouseEvent event) { }
     
    		public void mouseEntered(MouseEvent event) { }
     
    		public void mouseExited(MouseEvent event) { }
     
    		public void mousePressed(MouseEvent event) {
    			_clicked = event.getPoint();
     
    		}
     
    		public void mouseReleased(MouseEvent event) {}
    	}
    	class BAAreaMotionListener implements MouseMotionListener
    	{
     
    		public void mouseDragged(MouseEvent event) {
     
    			_phase =(float)(_phase + (event.getPoint().getY() - _clicked.getY())/(_me.getWidth()-10));
    			_me.repaint();
    		}
     
    		public void mouseMoved(MouseEvent event) {
    		System.out.println("c moi qui entend !");
    		}
    	}
    le panel ayant le micro Panel sur lui :
    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
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.util.ArrayList;
     
    import javax.swing.JPanel;
     
     
    public class GenePan extends JPanel{
     
    	PositionScrollPanel _posPan;
    	PhaseScrollPanel _phasePan;
    	ArrayList _geneList;
    	int _period;
     
    	GenePan(PositionScrollPanel posPan, PhaseScrollPanel phasePan, ArrayList geneList, int period)
    	{
    	super();
    //	this.setBackground(new Color(1.0f, 1.0f, 1.0f, 0.0f));
    	this.setOpaque(false);
    	_posPan = posPan;
    	_phasePan = phasePan;
    	_geneList = geneList;
    	_period = period;
    	this.setBounds(0,0,_posPan.getWidth(), _phasePan.getHeight());
    	}
     
    	public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    		drawGene(g);
    	}
     
     
     
    	private void drawGene(Graphics g)
    	{
    		this.setBounds(0,0,_posPan.getWidth(), _phasePan.getHeight());
    		int pixPhase = (int)((this.getHeight()-10)* _phasePan.getPhase())+5;
     
    		for (int i=0; i< _geneList.size(); i++)
    		{
    			GenePoint gp = (GenePoint)_geneList.get(i);
    			int x, y;
    			x = _posPan.getXPosition(gp.getPosition());
    			y = _phasePan.getYPhase(gp.getPhase(_period));
    			gp.setLocation(x, y);
    			this.add(gp);
    		}
    	}
    }
    et enfin mes micro Panel :
    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
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    import javax.swing.JPanel;
     
     
    public class GenePoint extends JPanel{
     
    	private int _position;
    	private String _name;
     
    	GenePoint(String name, int position)
    	{
    		_position= position;
    		_name = name;
    		this.addMouseListener(new PointListener());
    		this.setSize(5, 5);
    		this.setOpaque(false);
    		this.setToolTipText(name);
    	System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
     
    	}
     
    	public int getPosition()
    	{
    		return _position;
    	}
     
    	public String getName()
    	{
    		return _name;
    	}
     
    	public float getPhase(int period)
    	{
    		return (_position%period)/(float)period;
    	}
     
    	class PointListener implements MouseListener
    	{
    		public void mouseClicked(MouseEvent event) {
    			System.out.println(_name);
    		}
     
    		public void mouseEntered(MouseEvent event) {
    	// TODO Auto-generated method stub
    		}
     
    		public void mouseExited(MouseEvent event) {
    			// TODO Auto-generated method stub
    		}
     
    		public void mousePressed(MouseEvent event) {
    			// TODO Auto-generated method stub
    		}
     
    		public void mouseReleased(MouseEvent event) {
    			// TODO Auto-generated method stub
     
    		}
    	}
    	public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    		System.out.println("bouh");
    		g.setColor(Color.BLACK);
    		System.out.println(this.getY());
    		g.fillOval(0, 0, 5, 5);
    	}
    }

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Alors si tu souhaite juste transmetre des evenement entre classe (de ton panel principal vers les suivant), il faut que lors de l'instanciation de ton panel principal tu pass une reference vers ton micro panel.
    Ou alors c'est beaucoup plus joli, que tu crée un objet dedier specifiquement a la comunication interClass c'est a dire que tous les objets que tu creer connaisent ton objet gérant l'intercomunication et que tu enregistre chaque objet dans cette objet d'intercom, apres tu n'a plus qu'a aller chercher la reference vers le bon onbjet au moment voulu dans ton objet d'interco. Sa peux paraitre compliqué comme sa mais c super pratique et vraiment simple a mettre en oeuvre en fait.

    ++

  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
    Citation Envoyé par guis14
    Alors si tu souhaite juste transmetre des evenement entre classe (de ton panel principal vers les suivant), il faut que lors de l'instanciation de ton panel principal tu pass une reference vers ton micro panel.
    Ou alors c'est beaucoup plus joli, que tu crée un objet dedier specifiquement a la comunication interClass c'est a dire que tous les objets que tu creer connaisent ton objet gérant l'intercomunication et que tu enregistre chaque objet dans cette objet d'intercom, apres tu n'a plus qu'a aller chercher la reference vers le bon onbjet au moment voulu dans ton objet d'interco. Sa peux paraitre compliqué comme sa mais c super pratique et vraiment simple a mettre en oeuvre en fait.

    ++

    hum ca je sais faire mais comme le toolTipText n'a pas besoin de MouseListener pour fonctionner je voie pas trop comment faire .. je lui dipatch l'event quand meme ? à tous mes micro panels? (c'est quasiment impossible pour moi de savoir ou ils sont exactement (sauf faire une methode qui va être assez lourde) ...

    mais plus simplement il n'y a pas moyen des les mettres "au dessus" de mon grand panel (pas LayeredPane ca m'explose tout d'ailleurs je ne sait pas pourquoi)

    EDIT --> quel co**e .. g reussi au moins a avir celui que je souhaitais au dessus .. de la ca va etre un peu plus simple (pourquoi certaine methode font l'inverse de ce que je crois me rappeléer.. ? lol)

  4. #4
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    J'ai pas du bien comprendre alors tu souhaite faire comme si chaque micro panel avait un mouselistener c sa ? Et faire réagir le micro panel si on clique dessus par exemple ?

  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 guis14
    J'ai pas du bien comprendre alors tu souhaite faire comme si chaque micro panel avait un mouselistener c sa ? Et faire réagir le micro panel si on clique dessus par exemple ?

    oui mais pour l'instant il n'y en a pas ... enfin c'est bon je les ai mis au dessus .. je pense pouvoir gerer de la ce qui se passe en dessous (l'inverse etait beaucoup plus compliqué ^^)

  6. #6
    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
    OP c'est bon j'ai fait un dispatchEvent et les 2 panel entendent ^^

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

Discussions similaires

  1. [AC-2003] Problème pour désactiver l'évènement roulette de la souris
    Par willytito dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/03/2010, 16h02
  2. Petit problème récupération mvt souris :/
    Par Bakura dans le forum SDL
    Réponses: 4
    Dernier message: 18/11/2006, 18h56
  3. [wxpython] problème avec les événements souris
    Par kalimero dans le forum wxPython
    Réponses: 2
    Dernier message: 13/11/2005, 15h42
  4. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55
  5. Problème de transfert FTP sous IIS
    Par thanathz dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h27

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