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 :

TabbedPane et Focus


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut TabbedPane et Focus
    Bonjour,

    j'ai une fenetre avec des onglets et je voudrais quand un onglet est sélectionné qu'un certain élément de la fenêtre de l'onglet prenne le focus.
    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
     
    //Mes panel
    JPanel panelEntree = creePanelEntree();
    JPanel panelSortie = creePanelSortie();
     
    	panelSortie.addFocusListener(new FocusListener(){
    		public void focusGained(FocusEvent arg0) {
    			System.out.println("trarrzaz");
    			//met le focus sur la combobox
    			comboFeur.requestFocus();
    		}
    		public void focusLost(FocusEvent arg0) {
    			//rien faire
    		}
    	});
    //Mes onglets
    JTabbedPane tabbedPane = new JTabbedPane();
    		tabbedPane.addTab("Recettes",panelEntree);
    		tabbedPane.addTab("Dépenses",panelSortie);
    Sauf que quand je vais sur mon onglet Dépenses mon panelSortie.addFocusListener ne s'execute pas.

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Par défaut
    salut,

    qu'appelles-tu "selectionner" l'onglet ? un onglet est composé d'un tag et d'un component. le tag est l'étiquette qui dépasse, qui peut comporter titre, icone, etc..., et le component peut être ce que tu veux, le mieux c'est de mettre un Panel bien entendu.

    ton FocusListener est sur ton panel, donc sur ton Component, et pas sur le tag. ce qui signifie que pour que ta méthode de classe anonyme fonctionne, tu dois mettre le focus dans le Panel, et ta comboBox sera focusée (enfin je suppose, j'ai pas non plus verifié ton code).

    si tu veux que cela se fasse au moment de la sélection de l'onglet par le tag, tu dois passer par un nouveau ChangeListener sur ton objet JTabbedPane, avec par exemple dans ta méthode un if qui vérifie par getSelectedIndex() quel onglet est selectionné, et donc quoi faire (ou quoi selectionner).

    j'espère que je suis clair ? sinon n' hésite pas

    la javadoc : http://java.sun.com/j2se/1.4.2/docs/...abbedPane.html

  3. #3
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Merci pour ta réponse,

    J'ai fait ce que tu as dis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    tabbedPane.addChangeListener(new ChangeListener(){
    			public void stateChanged(ChangeEvent arg0) {
    				if (tabbedPane.getSelectedIndex() == tabbedPane.indexOfComponent(panelSortie));//si mon onglet est selectionné
                                            System.out.println("tralala");
    					comboFeur.requestFocus();//je met le focus sur mon element comboFeur
    			}
    		});
    Sauf que j'ai aucun focus nul part.
    Par défaut il se met sur le premier élément, et avec le code le focus est nulle part. Mais ca semble fonctionner, j'ai mis un System.out.println(); dans ma boucle if et il s'affiche bien quand je clique sur l'onglet qui m'intéresse.
    Mais mon focus ne se fait pas... Y'a pas une fonction du style getFocusedElement pour savoir ou est passé mon focus??

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Par défaut
    Component.getComponent()

    http://java.sun.com/docs/books/tutor...slistener.html

    essaie de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comboFeur.requestFocus();
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.panelSortie.comboFeur.requestFocus();
    ? aucune garantie, mais on ne sait jamais

    par contre, je ne sais pas s'il ne faudrait pas par hasard que ta Combobox ait un FocusListener ? je vais regarder ça

  5. #5
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    J'ai essayé ca mais sans succès :

    Envoyé le focus sur mon panel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tabbedPane.addChangeListener(new ChangeListener(){
    			public void stateChanged(ChangeEvent arg0) {
    				if (tabbedPane.getSelectedIndex() == tabbedPane.indexOfComponent(panelSortie)){
    					panelSortie.requestFocus();
    				}
    			}
    		});
    Mis un focus listener sur mon panel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    panelSortie.addFocusListener(new FocusListener(){
    			public void focusGained(FocusEvent arg0) {
    				comboFeur.requestFocus();
    			}
    			public void focusLost(FocusEvent arg0) {
     
    			}
    		});

  6. #6
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    comment tu selectionnes ton onglet ??

    en clikant avec la souris ?

    si c ça, moi j'essaierais un mouseListener sur l'onglet et quand je le clik
    alors je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monComposant.requestFocus
    Voila Bon courage

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

Discussions similaires

  1. Rajout du focus
    Par Claythest dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/06/2003, 17h10
  2. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  3. Comment être sure que mon appli prenne le focus ?
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/12/2002, 15h00
  4. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46
  5. focus en C
    Par killpilot dans le forum C
    Réponses: 8
    Dernier message: 19/04/2002, 19h19

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