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 :

Probleme de focus je crois ?


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut Probleme de focus je crois ?
    Bonjour a tous,

    Comme le dis mon titre, je ne suis pas sure de mon probleme. J'ai un JPanel qui contient un JSVGCanvas (de batik). Jusqu'a maintenant tout marchait bien mais j'ai voulu ajouter un ecouteur sur le clavier (avec la souris et la molette, ca fonctionne nickel). J'ai ajouté le Key listener sur le Jpanel et sur le JSVGCanvas et mes appuis clavier ne fonctionnent que si ma souris se trouve dans le JSVGCanvas
    J'en ai donc deduit que peut etre c'était un probleme de focus et que celui ci n'était que sur le JSVGCanvas mais ce que je ne comprend pas c'est que pour mes clics souris (qui fonctionnent sensiblement de la même manière) ca marche que je sois sur le JSVGCanvas ou sur le JPanel seul.
    Si quelqu'un voit dans quelle direction je dois chercher pour trouver une solution.....

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    Bon, ca faisait un moment que je cherchais sans trouver alors j'ai posté ma question et voila que je trouve la solution!!!
    Par contre, je ne comprends pas pourquoi ca marche....
    J'ai remplace mon implement KeyListener par
    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
     
    addKeyListener(new KeyAdapter()
    {
         public void keyTyped(KeyEvent e)
         {
         }
         public void keyPressed(KeyEvent e)
         {
    	ControlClavier(e);
         }
         public void keyReleased(KeyEvent e)
         {
         }
    }
    );
    dans ma fonction d'initialisation et la , ca marche bien sur le JPanel comme sur leJSVGCanvas.
    Si quelqu'un sait pourquoi, je veux bien une explication.
    Je n'aime pas quand ca marche et que je ne sais pas pourquoi...

  3. #3
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Desole, de n'avoir pas vu ton post plus tot car j'avais la solution.
    Moi aussi j'ai cherche pas mal de temps et en fait c'est un lien fais directement sur ton objet.
    Le focus est en fait le composant actif.
    Ainsi si tu n'as pas de lien par un composant actif ton interaction ne pourra etre decele par ton systeme comprends tu ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    Bonjour,
    j'ai bien compris le probleme mais je ne comprends pas pourquoi le fait de faire addKeyListener(new KeyAdapter) dans ma fonction d'initialisation au lieu de implement KeyListener sur mon Japplet resoud le probleme.
    Pour moi, ces deux methodes étaient identiques dans leurs fonctionnement.
    Apparemment, il doit y avoir une différence...

  5. #5
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    En fait implementer dans ton JApplet fais un appel mais ton objet reste inactif. Alors que si tu lui donne le focus soit comme un relais lors d'une course a pied ainsi l'objet peut interagir avec l'interface.
    Comprends tu ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    non, je ne comprends pas bien.
    Je croyais avoir resolu le pb mais il arrive encore parfois (moins souvent qu'avant) que ca ne marche plus et en recliquant sur ma fenetre à des endroits différents, ca se remet à marcher.
    Comment est ce que je peux forcer le focus sur ma JApplet????

  7. #7
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Il y a plusieurs possibilites.
    Donc le mieux est que tu mettes ton code.
    Car tu pourrais avoir par exemple un suivie de focus et a un moment tu omets de le faire et ainsi ton appli ne repond pas forcement.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    je veux bien mettre mon code mais quelle partie?? Je ne gère pas mon focus pour l'instant et me classe qui extends JApplet fait plus de 20500 lignes....

    Je te met mon constructeur et ma fonction d'initialisation simplifiée. Si il faut autre chose, dis le moi et je poste...

    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
     
    public class ZoneDessin extends JPanel 
    {
         public ZoneDessin(interfaceapplet app)
         {
    	this.setBackground(Color.white);
         }
     
         public void Initialisation() 
         {
    	canvasSVG=new ZoneSVG(this);
    	this.add(canvasSVG);
    	canvasSVG.Initialisation();
    	setBackground(Color.white); 
    	addKeyListener(new KeyAdapter()
    	{
    		public void keyTyped(KeyEvent e)
    		{
    		}
    		public void keyPressed(KeyEvent e)
    		{
    			ControlClavier(e);
    		}
    		public void keyReleased(KeyEvent e)
    		{
    		}
    	}
    	);
    	addMouseListener(new java.awt.event.MouseAdapter()
    	{ 
    		public void mousePressed(MouseEvent e)
    		{ 
    			TestBoutonEnfonce(e); 
    		} 
    		public void mouseReleased(MouseEvent e)
    		{ 
    			TestBoutonDesenfonce(e); 
    		} 
    		public void mouseClicked(MouseEvent e)
    		{ 
    			ClicSouris(e); 
    		} 
    	}
    	); 
    	addMouseMotionListener(new MouseMotionAdapter()
    	{ 
    		public void mouseDragged(MouseEvent e)
    		{ 
    			MouvementSouris(e);
    		}
    		public void mouseMoved(MouseEvent e)
    		{
    			BougeSouris(e);
    		}
    	}
    	); 
    	addMouseWheelListener(new MouseWheelListener()
    	{ 
    	             public void mouseWheelMoved(MouseWheelEvent e)
          		{
          		             MouvementMolette(e);
          		}
                 }
    	); 
          }
    }

    Pour ma classe JSVGCanvas, voila le constructeur et la fonction d'initialisation :

    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
     
    public class ZoneSVG extends JSVGCanvas 
    {
     
         public ZoneSVG(ZoneDessin zd)
         {
    	this.zd=zd;
                 Color bg=new Color((float)1.0,(float)1.0,(float)1.0,(float)0.0);
    	this.setBackground(bg);	 
    	 addGVTTreeRendererListener(new SvgRenderer());
         }
         public void Initialisation() 
         {				
    	addKeyListener(new KeyAdapter()
    	{
    		public void keyTyped(KeyEvent e)
    		{
    		}
    		public void keyPressed(KeyEvent e)
    		{
    			zd.ControlClavier(e);
    		}
    		public void keyReleased(KeyEvent e)
    		{
    		}
    	}
    	);
    	addMouseListener(new java.awt.event.MouseAdapter()
    	{ 
    		public void mousePressed(MouseEvent e)
    	            { 
    		      TestBoutonEnfonce(e); 
    		 } 
    		public void mouseReleased(MouseEvent e)
    		{ 
    			TestBoutonDesenfonce(e); 
    		} 
    		 public void mouseClicked(MouseEvent e)
    		 { 
    		 	ClicSouris(e); 
    		 } 
                    }
    	); 
    	addMouseMotionListener(new MouseMotionAdapter()
    	{ 
    		public void mouseDragged(MouseEvent e)
    	            { 
    			MouvementSouris(e);
    		}
    		public void mouseMoved(MouseEvent e)
    		 {
    		 	BougeSouris(e);
    		  }
    	 }
    	); 
    	addMouseWheelListener(new MouseWheelListener()
    	{ 
    		public void mouseWheelMoved(MouseWheelEvent e)
          		{
          			MouvementMolette(e);
          		}
    	}
    	);		
    }
    voila, j'espere que ce pourra t'aider à m'aider

  9. #9
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    bonsoir,

    desole mais je suis overbooke en ce moment donc je ne peux guere regarde ton code.
    Mais se que je peux faire pour t'aider c'est te montrer mon code.


    Ici j'appel mon panel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new Administration(this)
    Et voici le JPanel qui nécéssite le focus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Administration extends JPanel{
    	private DesktopFrame mainframe;
    	public Administration(DesktopFrame _frm){
    		mainframe=_frm;
    		panel = new JPanel();
    En esperant que tu comprennes

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    Bon, je vais conclure ma question. J'ai résolu (enfin, plutot détourné ) le problème en passant par un bouton sur mon interface graphique car je n'arrive pas a avoir toujours le focus au bon moment. Parfois, ca marche,Parfois, ca ne marche pas et je ne sais vraiment pas pourquoi
    Merci de ton aide....

  11. #11
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Et si tu faisais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class ZoneDessin extends JPanel 
    {
         private ZoneDessin zoneDessin;
         public ZoneSVG(ZoneDessin zd)
         {
    	zoneDessin=zd;
     
            ....
    Tiens moi au courant

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 142
    Par défaut
    hou la la, je ne comprends pas!!
    on peut mettre le constructeur de la classe ZoneSVG dans la classe Zonedessin? et ma classe ZoneSVG, elle existe encore ou je la supprime?

  13. #13
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Et si tu utilisait le composant Swing de Batik à la place du composant AWT...
    En général AWT et Swing font mauvais ménage, essaie donc avec un JSVGPanel à la place d'un JSVGCanvas

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

Discussions similaires

  1. Bouton moche sous IE, probleme de Focus
    Par nicottin dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 30/08/2007, 14h43
  2. probleme avec focus sous ie du flash
    Par éloi_75 dans le forum Flash
    Réponses: 15
    Dernier message: 22/02/2007, 23h27
  3. Surment un probleme de focus ?
    Par quentingsc dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 04/02/2007, 18h34
  4. [Action Script] Probleme de Detph (je crois)
    Par Neroptik dans le forum Flash
    Réponses: 2
    Dernier message: 14/11/2006, 03h55
  5. [C#] Probleme de focus
    Par kenzo080 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 27/01/2006, 15h58

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