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 :

Comment changer le BasicArrowButton ?


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    lvr
    lvr est déconnecté
    Membre éclairé Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    919
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 919
    Par défaut Comment changer le BasicArrowButton ?
    Bonjour,

    J'ai développé un composant, qui est une forme de ComboBox plus complexe pour une utilisation très particulière.

    Pour ça j'ai utilisé notamment le "BasicArrowButton" pour pouvoir ouvrir le popup du combo.

    Je bosse sous WinXP mais j'ai longtemps utilisé le look "Win2000". Je viens de switcher au look XP et je vois que le BasicArrowButton ne se présente plus comme les autres boutons avec flèches (combo classiques, spinners, ...).

    Ici dans la capture, la dd pour "Trigger" est mon composant, alors que celui pour "Form" est un combobox classique:



    A mon avis il s'agit d'un problème du Look&Feel (j'utilise UIManager.getSystemLookAndFeelClassName), car si je teste avec un L&F de jGoodies, le bouton a une bonne tête.

    Ce que je voudrais faire, c'est refaire un UI correct pour ce bouton en m'inspirant du CombBoxUI. Et de demander au L&F d'utiliser mon UI.

    Est-ce possible ?
    Avec UIManager.put(????,MyNewBABui)
    Est-il possible de distinguer que je suis sous un L&F "Windows XP" pour ne pas forcer mon nouveau UI pour les utilisateurs qui travailleraient dans d'autres OS ?

    Merci

  2. #2
    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 utiliser un JButton normal pourrait aussi être une solution...
    Suffit juste de récupérer l'icon qui est utilisée pour la JComboBox dans l'UIManager et l'affaire devrait être jouée.


    Surtout que ce composant (que je n'avais jamais capté soit dit en passant) me semble bizarre, avec une méthode paintTriangle des plus suspectes directement dans le composant, alors que ce devrait plutôt être le rôle de l'UIDelegate...

    Bref louche.

    [Edit] Je viens de fouiller dans les sources du JDK, le bouton utilisé dans l'UI XP de la JComboBox n'est pas un ArrowButton, mais un XPComboBoxButton, classe privée définie dans l'UIDelegate WindowsComboBoxUI.
    C'est donc mort pour le récupérer, ça tape dans des classes non documentées et ne faisant pas parties des specs java, donc mieux vaut éviter si tu veux garder ton composant stable
    Donc définitivement, JButton plus icône (même pas sur que tu puisses récupérer l'icône dans l'UIManager d'ailleurs).
    [/Edit]

  3. #3
    lvr
    lvr est déconnecté
    Membre éclairé Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    919
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 919
    Par défaut
    Merci Sinok. Va pour l'icône.
    Mais comment savoir quand je dois le faire ?
    Pour quelqu'un qui tourne mon application sous linux, Win2000, WinXP avec interface Win2000.. je ne dois pas le faire.
    Pour quelqu'un qui tourne sous XP avec interface XP, je dois le faire.
    Comment savoir ?

Discussions similaires

  1. [C#] Comment changer dans une chaine
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 13/05/2004, 13h17
  2. Comment changer l'heure système ?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/04/2004, 10h24
  3. Comment changer des mots dans un fichier?
    Par ptitbonum dans le forum Linux
    Réponses: 5
    Dernier message: 07/04/2004, 23h42
  4. comment changer d'attribut de fonte dans un Tlabel?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 21/08/2002, 16h53
  5. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46

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