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 :

Où placer un keyListener ?


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 Où placer un keyListener ?
    Arrive le moment où la souris ne me suffis plus !

    Je vais vous décrire un peu mon programme car je ne sais pas où placer mon (ou mes ) keylistener(s)

    J'ai donc un JFrame , à l'interieur de celle-ci un JInternalFrame.
    dans la JInternalFrame une collection de Jpanel.
    dans un des ses JPanels plusieurs panels dont un sur lequel je veux pouvoir deplacé une petite bande de couleur avec les bouton haute et base du pad directionnel.

    bougé la bande n'est pas un problème je le fait pour l'intant avec la soursi.

    La question est où dois je écouter le clavier . car visiblement directement sur le panel ca ne marche pas (j'ai pourtant essayer d'avoir le focus) quand je passe ma souris dessus il me dit que j'ai le focus mais rien ne se passe lorsque je clic sur une touche.

    Sacahnt que dans le futur les different panel de la JFrame pourrant chacun avoir un comportement spécial vis à vis du clavier comment dois je organiser tout cela ?

    (le code du panel ou je voudrais écouter si en fait c'est un pb dans mon code:
    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
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.util.ArrayList;
     
    import javax.swing.JPanel;
     
     
    public class GenePan extends JPanel implements KeyListener{
     
    	PositionScrollPanel _posPan;
    	PhaseScrollPanel _phasePan;
    	ArrayList _geneList;
    	int _period;
    	BAGraphPan _parent;
    	GenePan _me;
     
    	GenePan(PositionScrollPanel posPan, PhaseScrollPanel phasePan, ArrayList geneList, int period, BAGraphPan parent)
    	{
    	super();
    	this.setOpaque(false);
    	_parent = parent ; 
    	_posPan = posPan;
    	_phasePan = phasePan;
    	_geneList = geneList;
    	_period = period;
    	_me = this;
    	this.setFocusable(true);
    	this.setBounds(0,0,_posPan.getWidth(), _phasePan.getHeight());
    	this.addMouseListener(new GeneClic());
    	this.addMouseMotionListener(new GeneMotion());
    	}
     
    	public void paintComponent(Graphics g)
    	{
    		super.paintComponent(g);
    		drawGene(g);
    	}
     
    	class GeneClic implements MouseListener
    	{
    		public void mouseClicked(MouseEvent event) { }
     
    		public void mouseEntered(MouseEvent event) { _me.requestFocus();}
     
    		public void mouseExited(MouseEvent event) { }
     
    		public void mousePressed(MouseEvent event) {
    			_parent.getBAArea().dispatchEvent(event);
    		}
     
    		public void mouseReleased(MouseEvent event) {
    			_parent.getBAArea().dispatchEvent(event);
    		}
    	}
     
    	class GeneMotion implements MouseMotionListener
    	{
     
    		public void mouseDragged(MouseEvent event) {
    			_parent.getBAArea().dispatchEvent(event);
    		}
     
    		public void mouseMoved(MouseEvent event) {
    		System.out.println("c moi qui entend ! GENE");
    		System.out.println(_me.isFocusOwner());
    		_parent.getBAArea().dispatchEvent(event);
     
    		}
    	} 
     
    	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);
    		}
    	}
     
    	public void keyPressed(KeyEvent event) {
    		// TODO Auto-generated method stub
    		System.out.println("préssé !");
    	}
     
    	public void keyReleased(KeyEvent event) {
    		// TODO Auto-generated method stub
    	}
     
    	public void keyTyped(KeyEvent event) {
    		// TODO Auto-generated method stub
    	}
    }

  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
    Salut,

    Tu a essayer le this.addKeyListener()...
    Sinon ajout le sur ta JFrame et en fonction d'ou se trouve le focus tu interprete le clavier comme cela te va

  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
    Salut,

    Tu a essayer le this.addKeyListener()...
    Sinon ajout le sur ta JFrame et en fonction d'ou se trouve le focus tu interprete le clavier comme cela te va

    ....... *se tappe la tête contre un mur* ........... J'en ai marre d'oublier d'attacher les listeners !!!

    EDIT >> AH mais nan ! j'implments le KeyListener ! g pas à l'attacher ? si ? (avec this ?)

    Enfin mon problème va quand meme etre la .. quand j'aurais tout plein de panel ect ... comment etre sur de recuperer le focus la ou je veux ? par exemple si je fais un request focus sur un MouseListener Entered je n'aurais pas de problème ? (je demande car j'ai déjà eu ce problème sur un ancien programme)

  4. #4
    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
    OK c'était ca (vraiment marre d'oublier d'attacher les ecouteurs lol)

    donc un this.addKeyListener(this) c'est bien ^^

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

Discussions similaires

  1. recuperer date dans un batch et la placer en variable
    Par Phenomenium dans le forum Windows
    Réponses: 6
    Dernier message: 07/06/2004, 10h44
  2. [TOMCAT][XML] Ou placer les fichiers XML ?
    Par kitov dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 01/06/2004, 14h29
  3. [C#] Placer fichier html entre balises DIV
    Par Febus dans le forum ASP.NET
    Réponses: 9
    Dernier message: 07/05/2004, 11h44
  4. Réponses: 3
    Dernier message: 12/03/2004, 19h34
  5. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58

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