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 Combobox différent sur Windows XP et Seven


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut Comportement Combobox différent sur Windows XP et Seven
    Bonjour à tous,

    Je migre une application de Windows XP vers Windows Seven. J'ai remarqué quelques changements minimes mais un me gêne particulièrement. C'est le comportement des combobox.
    Sur Windows XP quand j'ai le focus sur la Combobox et que j'utilise les flèches haut et bas j'ai la liste des différents choix qui défile un à un dans la combobox.

    En revanche sur Windows Seven en faisant la même chose j'ai tout d'abord la liste qui s'ouvre avec tous les choix possibles et ensuite je peux me déplacer dedans.

    Est ce possible d'avoir le même comportement que sur XP ou bien est ce vraiment spécifique à Seven et il n'y a rien à faire ?

    Merci

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    As-tu la même version de la JRE sur les deux machines ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Non je suis passé de Java 5 à Java 6 :/

    J'ai aussi le comportement des boutons avec la touche Entrée qui a beaucoup changé. Avec Java 5 la touche Entrée validait des choses mais ne les valide plus en Java 6. C'est la touche espace qui prend le "relais".
    J'aimerais aussi changer ça si possible.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Les changements de comportements Swing entre la 1.5 et la 1.6 doivent être listés quelque part. As-tu cherché ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    J'ai trouvé ça mais je ne vois rien de spécial http://docs.oracle.com/cd/E17802_01/...dex-diffs.html
    Ou sinon j'ai de mauvais yeux ce qui est possible

  6. #6
    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
    Euh, ce que tu décris dans ton cas originel est le comportement du LookAndFeel Windows.

    Dans ton second cas, tu décris le comportement du LookAndFeel standard de java (Metal + theme Ocean).

    Le look and feel standard n'a pas vocation à se comporter exactement que le système hôte.


    Donc si tu veux avoir ce comportement sous windows, utilise le look and feel système.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Bonjour,

    En effet ça vient de la.
    Ça résout aussi mes problèmes de validations avec la touche entrée qui ne se faisait plus et tous les autres comportements bizarre que j'avais identifié.

    Maintenant la question est : comment puis-je faire pour garder mon thème METAL en ajoutant quelques comportements personnels comme ceux décrit dans ce topic.

  8. #8
    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
    Le thème métal étant fondamentalement dégueulasse... Oublie le.

    Cherches toi un Look and feel cross platform un peu potable convenant à tes besoins et applique le.

    Substance: https://github.com/Insubstantial/insubstantial/
    JGoodies Looks: http://www.jgoodies.com/freeware/libraries/looks/
    Seaglass: http://code.google.com/p/seaglass/
    JTatoo: http://www.jtattoo.net/index.html
    Synthetica: http://www.javasoft.de/synthetica/
    Nimbus: fourni dans les versions récentes de java

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Je n'ai malheureusement pas le choix du thème, ça doit être METAL
    Maintenant ce que je me demande est : est-il possible de choisir le thème METAL mais de garder les comportements (focus, liste déroulante, bouton entrée au lieu d'espace, etc...) du thème SYSTEM (en l'occurrence Windows).

    Pour l'instant je n'ai trouvé que des modifications de la partie graphique (un peu comme un CSS) mais aucun sur le comportement.

    Sais tu si c'est possible ?

    Merci

  10. #10
    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
    Pour ça, il va te falloir jouer avec les actionMap et inpuMap de tes composants.

    C'est là que se font les bindings entre les actions et le input.

    Il va falloir regarder ce qu'il y a dedans, et lire l'implémentation du MetalLookAndFeel pour voir ce qui est fait réellement.

  11. #11
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Oula ça commence à devenir plus complexe j'ai l'impression

    Tu aurais des exemples ou ce genre de choses ? Je cherche aussi de mon côté

  12. #12
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Bonjour,

    J'ai essayé ça afin d'avoir toutes mes combobox qui se comporte avec le look and feel de windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.put("ComboBoxUI", "java.swing.plaf.windows.WindowsLookAndFeel");
    mais ça n'a pas l'air de vouloir fonctionner..

    QQun aurait il une idée pour modifier le comportement d'un type de composant d'un seul coup ?
    Je ne peux pas me permettre de les modifier un par un car l'application est trop conséquente.

    Merci

  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
    La classe WindowsLookAndFeel n'est en aucun cas une classe héritant de ComponentUI.

    Donc ça ne marchera pas. Il faudrait que tu ailles chercher le nom la classe qui sert de de ComponentUI à ta JComboBox plus ou moins au runtime.

    Attention, le WindowsLookAndFeel ne fait pas partie de la spécification Java (elel fait partie des apckages com.sun.* dans lesquels se trouvent les éléments non standard),
    Donc tu rends ton application totalement non portable en faisant ça (en termes de système, mais aussi de JVM, voir même entre différentes versions d'une même JVM...)

  14. #14
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Bonjour Sinok,

    Concernant la non portabilité du look and feel Windows, ça n'a dans mon cas aucune importance même si bien sûr dans le principe ce n'est pas bien.

    En revanche pour le reste je ne comprend pas très bien.
    Par exemple si je fais qqchose de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UIDefaults uiDefaults = UIManager.getDefaults();
    uiDefaults.put("ComboBoxUI", "javax.swing.plaf.basic.BasicComboBoxUI");
    je vois bien un changement de l'apparence de ma ComboBox mais pas de son comportement.
    Et si je vais chercher le componentUI de ma ComboBox ça ne changera que l'apparence de cette combobox ? car ce que je voudrais faire c'est changer l'apparence et le comportement de toutes les combobox de mon application d'un seul coup.

    Aurais-tu un exemple, au moins pour changer le comportement d'une seule car la j'avoue ne pas tout piger :/

  15. #15
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Bonjour,

    Bon du coup je m'en suis sorti comme ça pour ceux qui en auraient éventuellement besoin

    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
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    UIDefaults uiDefaults = UIManager.getDefaults();
                Map<String, Object> map = new HashMap<String, Object>();
                // boucle sur les composants
                Enumeration<?> eEnum = uiDefaults.keys();
                String key;
                while (eEnum.hasMoreElements()) {
                    key = eEnum.nextElement().toString();
                    // Toutes les clés contenant Button sont transformés en Look&Feel système
                    if (key.contains("Button")) {
                        map.put(key, uiDefaults.get(key));
                    }
                    // Toutes les clés contenant ComboBox sont transformés en Look&Feel système
                    if (key.contains("ComboBox")) {
                        map.put(key, uiDefaults.get(key));
                    }
                }
    Ensuite j'applique le lookandfeel metal pour les composants restants.

    En revanche il me reste un autre soucis.

    Sur un JMenu j'applique un setBackground(Color) et pour le Look and Feel
    Windows je n'ai aucun soucis mais pour le Look and Feel Metal ça coince et lorsque je regarde la description de la méthode je vois ça (en gras)
    Sets the background color of this component. The background color is used only if the component is opaque, and only by subclasses of JComponent or ComponentUI implementations. Direct subclasses of JComponent must override paintComponent to honor this property.

    It is up to the look and feel to honor this property, some may choose to ignore it.
    Comment faire pour que le look and feel n'ignore pas cette propriété ??

    Merci

  16. #16
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Je me répond et je clos le sujet il faut mettre la propriété

    avant de faire le setBackground et ça semble fonctionner correctement.

    Merci à tous

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/09/2014, 14h08
  2. Comportement Hub USB sur Windows 7
    Par insane1 dans le forum Périphériques
    Réponses: 5
    Dernier message: 21/06/2011, 18h11
  3. comportement différent sur 2 pc
    Par robert_trudel dans le forum Access
    Réponses: 4
    Dernier message: 26/02/2007, 04h21
  4. Réponses: 2
    Dernier message: 02/12/2005, 05h28

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