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 :

Comportement etrange JWindow avec focus


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 51
    Par défaut Comportement etrange JWindow avec focus
    Bonjour a tous,
    je crée ce post pour tenter de comprendre un comportement swing qui me parait bizarre, voici l'enigme:
    - J'ai une JFrame qui contient un JPanel qui contient un bouton qui fait un setVisible(true) sur une JWindow. Jusqu'ici rien de compliqué.

    - J'aimerai maintenant qu'en cliquant sur ce bouton, je donne aussi le focus a cette JWindow. C'est la que les pb arrivent...

    - J'ai beau mettre setEnable et setfocusable a TRUE, appeler requestFocus() sur le composant de ma JWindow, utiliser des WindowListener, WindowFocusListener... rien n'y fait, le focus reste sur le bouton.

    PAR CONTRE, quand j'appelle setVisible(true) 2 fois de suite (eh oui c bizarre comme test, hein ;-)), le focus part bien sur la JWindow !!

    Quelqu'un serait-il capable de m'expliquer pourquoi ?? parce que là je suis un rien troublé... :-)

    Merci d'avance !

  2. #2
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 51
    Par défaut
    Voici le code en tres simplifié.
    1 clic sur start rend la JWindow visible, mais sans focus
    1 second click sur start lui donne 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
    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
     
    public class TraceIHM2 extends JFrame implements ActionListener{
     
    		JPanel pan = new JPanel();
    		  JWindow win = null;
    		  JButton but =null;
    		  JButton but1 =null;
    		  JList list=null;
     
    	public void draw(){
     
    		list = new JList();
    		DefaultListModel listModel = new DefaultListModel();
    		list.setModel(listModel);
    		listModel.addElement("UN");
    		listModel.addElement("DEUX");
    		listModel.addElement("TROIS");
     
    		win = new JWindow(this);
    		win.getContentPane().add(list);
    		win.setSize(300,200);
    		win.setLocation(200,200);
     
    		but = new JButton("depart");
    		but.addActionListener(this);
    		but1 = new JButton("stop");
    		but1.addActionListener(this);
     
    		pan.add(but);
    		pan.add(but1);
    	        this.getContentPane().add(pan);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.pack();
    		this.setVisible(true);
     
    	}	
     
    	public void actionPerformed(ActionEvent e) {
    		if (e.getSource()==but){
    			win.setVisible(true);
    			win.pack();
    		}
     
    		if (e.getSource()==but1){
    			win.setVisible(false);
    		}
    	}
     
    	public static void main(String[] args) {
    		TraceIHM2 toto = new TraceIHM2();
    			toto.draw();
    	}
    }

  3. #3
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    C'est peut être à cause de ce qui est expliqué à Introduction to the Focus Subsystem :
    JWindow and focus: To use a JWindow component in your GUI, you should know that the JWindow component's owning frame must be visible in order for any components in the window to get the focus. By default, if you do not specify an owning frame for a JWindow component, an invisible owning frame is created for it. The result is that components in the JWindow component might not be able to get the focus. The solution is either to specify a visible owning frame when creating the JWindow component, or to use an undecorated JFrame component instead.
    La solution est soit de spécifier une fenêtre (JFrame, ndt) VISIBLE propriétaire en créant la JWindow, soit d'utiliser une JFrame sans décorations. (cette dernière solution est de loin la meilleure, ndt).

Discussions similaires

  1. Comportement etrange avec heritage !
    Par DakM dans le forum Langage
    Réponses: 0
    Dernier message: 26/03/2012, 03h40
  2. [Dojo] Layout avec un comportement etrange
    Par ernestrenan dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 04/01/2012, 22h10
  3. comportement etrange avec un form
    Par cpom dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/01/2007, 23h02
  4. [langage] Comportement étrange d'une variable
    Par Spaz dans le forum Langage
    Réponses: 6
    Dernier message: 23/04/2004, 11h29
  5. [eclipse][plugin] Comment avoir une fenêtre avec focus
    Par relivio dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/04/2004, 15h54

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