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

Composants Java Discussion :

[JComboBox] Keylistener & look and feel


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Par défaut [JComboBox] Keylistener & look and feel
    Bonjour,

    J'ai un petit problème avec cette classe:

    public class JTest
    extends JFrame {

        public JTest() {
            final JComboBox combo = new JComboBox();
            combo.setEditable(true);
            combo.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
                public void keyPressed(KeyEvent e) {
                    JOptionPane.showMessageDialog(null, "KeyPressed !");
                }            
            });
            getContentPane().add(combo);
            
    /*try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                SwingUtilities.updateComponentTreeUI(this);
            } catch (Exception e) {
                System.err.println("Couldn't use system look and feel.");
            }*/

            pack();
        }

        public static void main(final String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new JTest().setVisible(true);
                }
            });
        }
    }


    Tout se passe bien si je garde les commentaires, c'est-à-dire sans appliquer de look and feel. Par contre, dès que je les ôte, le KeyListener ne fait plus son boulot...

    Apparemment c'est "SwingUtilities.updateComponentTreeUI(this)" qui bloque. Dans cet exemple précis je peux évidemment m'en passer en appliquant le look and feel au début du constructeur, mais j'en ai besoin pour une autre appli dans laquelle j'appelle dynamiquement certains composants (donc besoin de faire un updateUI).

    Quelqu'un aurait une idée ? parce que là je vois vraiment pas !


    Merci d'avance !

  2. #2
    Membre confirmé Avatar de Goldocrack
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 126
    Par défaut
    A tout hasard à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    combo.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
    Essaie de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    KeyAdapter key = new KeyAdapter();
    combo.getEditor().getEditorComponent().addKeyListener(key) {

    Je pense que quand le composant se refraichit il perd la référence au Listener

  3. #3
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    En effet, la méthode updateUI() appliquée à un JComboBox recrée un nouvel éditeur.

  4. #4
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Par défaut
    Ben non, ça ne fonctionne pas quand même.
    Il perd quand même la référence au keyListener... :'(

  5. #5
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    cf. réponse précédente... tu es obligé de repositionner ton listener une fois le changement de look effectué...

  6. #6
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Par défaut
    bon ben y a de la bidouille dans l'air alors...
    Un grand merci quand même !

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

Discussions similaires

  1. [debutant] SWT Look and feel
    Par debutant java dans le forum SWT/JFace
    Réponses: 11
    Dernier message: 23/02/2007, 10h30
  2. [Look and feel] Texte des JLabels en gras
    Par aliasjcdenton dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 26/01/2006, 11h49
  3. [look and feel] Ou les trouver ?
    Par olive.m dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 08/03/2004, 18h42
  4. Nouveau look and feel
    Par julian_ross dans le forum JBuilder
    Réponses: 6
    Dernier message: 16/12/2003, 15h55
  5. Jbuilder9 Look and feel de borland
    Par wsrudmen dans le forum JBuilder
    Réponses: 6
    Dernier message: 26/06/2003, 18h07

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