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 :

[UI Delegate] Comment appliquer un Ui a tous les composants ?


Sujet :

AWT/Swing Java

  1. #1
    Invité
    Invité(e)
    Par défaut [UI Delegate] Comment appliquer un Ui a tous les composants ?
    Bonjour,

    J'ai crée une nouvelle classe de délégation :
    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
     
    public class JMenuBarUi extends BasicMenuBarUI {
     
        private GradientPaint gp;
     
        public void paint(Graphics g, JComponent c) {
            System.out.println("paint " + c);
     
            Graphics2D g2d = (Graphics2D)g;
     
            gp = new GradientPaint(0, c.getHeight(), new Color(24,75,164), 0, c.getHeight()/4, new Color(86,132,212) );
            g2d.setPaint(gp);
     
     
            g2d.fillRect(0, 0, c.getWidth(), c.getHeight());
            g2d.setColor( new Color(248,177,6));
            g2d.fillRect(0, c.getHeight()-2, c.getWidth(), c.getHeight()-2);
     
     
            super.paint(g,c);
     
        }
    }
    Pour l'appliqer je fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    menuBar.setUI(new JMenuBarUi());
    Jusque la tout va bien sauf que maintenant je veux faire le même pour les JMenuItem.

    Suis-je obligé de toujours faire des setUi(..)
    Ou y à t'il une autre méthode ?

    J'avait vu sur le forum quelque-chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.getDefaults().put("nom_ui","nom_delegation")
    Mais ça ne fonctionne pas..

    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Architecte IT
    Inscrit en
    Janvier 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Architecte IT

    Informations forums :
    Inscription : Janvier 2006
    Messages : 24
    Points : 23
    Points
    23
    Par défaut
    1 - As-tu bien écrit : UIManager.getDefaults().put("MenuBarUI","MenuBarUi"); ?

    2 - As-tu essayé un SwingUtilities.updateComponentTreeUI(aFrame);
    après cette ligne ? et ce pour toutes les frames ou tu veux appliquer ton UI ?

    3 - fais-tu bien celà dans le thread Swing (EDT) ?

  3. #3
    Membre éclairé
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Points : 704
    Points
    704
    Par défaut
    bonjour Blaise1 :-))

    deux remarque
    1. tu a oublie de surcharger la methode.

    public static ComponentUI createUI(JComponent c)

    2. souvent les classe qui commence par J sont des composant swing. JMenuBar, JMenuItem, JButton... Essaye de trouver mieux que JMenuBarUi. (MenuBarUI existe deja ;-) )


    sinon pour ta question, un MenuBarUI c'est pas un MenuItemUI mais tu peut quand meme le faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UIManager.put("MenuBarUI", "TonBasicMenuBarUI")
    UIManager.put("MenuUI",    "TonBasicMenuUI qui peut etre ton MenuBarUI mais attention au resultat",
    UIManager.put("MenuItemUI", "TonBasicMenuItemUI" attention aussi au resultat.
    UIManager.put("CheckBoxMenuItemUI", "TonCheckBoxMenuItemUI" 
    UIManager.put("RadioButtonMenuItemUI", "TonRadioButtonMenuItemUI"

    je te conseille vraiment de creer un UI par composant. MenuBar, Menu, MenuItem, CheckBoxMenuItem et RadioButtonMenuItem.

    UIManager.getDefaults().put("MenuBarUI","MenuBarUi") faut pas obliger le getDefaults

    SwingUtilities.updateComponentTreeUI(aFrame) faut pas non plus si tu fais le changement au debut de ton programme avant de lancer une fenetre.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mikaMike
    1 - As-tu bien écrit : UIManager.getDefaults().put("MenuBarUI","MenuBarUi"); ?
    oui et j'ai vérifie plusieurs fois l' "eaurtogrâfeu"

    Citation Envoyé par mikaMike
    2 - As-tu essayé un SwingUtilities.updateComponentTreeUI(aFrame);
    après cette ligne ? et ce pour toutes les frames ou tu veux appliquer ton UI ?
    C'est pas pour une frame mon UI, c'est pour la barre de menu, mais oui je voudrais que ce soit appliqué à toutes les frames.

    Citation Envoyé par mikaMike
    3 - fais-tu bien celà dans le thread Swing (EDT) ?
    Je crois oui mais j'ai pas vérifié..


    Citation Envoyé par bbclone
    bonjour Blaise1 :-))

    deux remarque
    1. tu a oublie de surcharger la methode.

    public static ComponentUI createUI(JComponent c)
    Ok, merci. Elle fait quoi cette méthode ? je dois la surcharger pourquoi ?

    Citation Envoyé par bbclone
    2. souvent les classe qui commence par J sont des composant swing. JMenuBar, JMenuItem, JButton... Essaye de trouver mieux que JMenuBarUi. (MenuBarUI existe deja ;-) )
    Oui je sais mais la je fesais des tests alors je me suis pas trop pris la tête

    Citation Envoyé par bbclone
    sinon pour ta question, un MenuBarUI c'est pas un MenuItemUI mais tu peut quand meme le faire...

    je te conseille vraiment de creer un UI par composant. MenuBar, Menu, MenuItem, CheckBoxMenuItem et RadioButtonMenuItem.

    SwingUtilities.updateComponentTreeUI(aFrame) faut pas non plus si tu fais le changement au debut de ton programme avant de lancer une fenetre.
    Ok, merci mais ne t'inquiète pas je comptais utiliser un UI par composant. Je n'ai jamais voulu utiliser le même pour MenuBar et MenuItem..


    Merci pour vos réponses et conseils, je vais déja essayer tout ça..

  5. #5
    Membre éclairé
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Points : 704
    Points
    704
    Par défaut
    :-)
    a quoi sert la méthode createUI(JComponent c) ?

    t'es sur de savoir qu'est ce que tu fais?
    je veux bien t'expliquer mais faut que je sais si tu sais ce que tu fais quand meme.

  6. #6
    Invité
    Invité(e)
    Par défaut
    erf,

    Non je ne sais pas trop. Enfin, je veux savoir créer des composant (que je trouve) plus joli sans avoir à ecrire un LookAndFeel

    Mais je ne veux pas devenir un pro la dedans, juste savoir le faire de temps en temps

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/08/2007, 12h20
  2. Réponses: 7
    Dernier message: 20/08/2006, 02h48
  3. Réponses: 2
    Dernier message: 06/06/2006, 09h32
  4. Comment lister tous les composants d'une fiche ?
    Par tipiweb dans le forum Langage
    Réponses: 2
    Dernier message: 18/01/2006, 22h53

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