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 :

Créer son propre look and feel ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut Créer son propre look and feel ?
    Bonjour,

    Je viens de faire un petit tour sur internent et sur la Faq et les tutoriels de ce sites, et donc maintenant je m'adresse à vous.
    Sauriez vous où je pourrais trouver un simple exemple montrant comment définir un look and feel pour certains composant.
    Par exemple, je voudrais que tous mes panels soient blanc, ou éventuellement créer un look and feel avec des dégradés, mais je ne trouve rien de simple pour illustrer un exemple ?

    Sinon, merci et Bonne année au fait

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Est-ce que tu ne confondrais pas avec les models ?

    Cela répond à ton problème, non ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    En fait, je voudrais réaliser mon application sans me soucier des couleurs, des tailles etc... Et par la suite pouvoir tout modifier d'un coup.
    Je pensais qu'il existait grace au systeme (plaf) du look and feel un moyen de définir l'apparence d'un composant donné. Par exemple, si je dis, tous mes JPanel seront avec un fond noir et une taille de 10 pour la font. Alors via le mécanisme de look and feel cela serait possible.
    Je voudrais uniquement toucher au look de mon application. Pas aux données elles meme...

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Disons que le fait de créer un LookAndFeel est assez complexe...


    Par contre il est assez simple de modifier le comportement d'un LookAndFeel en passant par l'UIManager. Ainsi pour utiliser une couleur de fond blanche sur tous les JPanel, il suffit d'utiliser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.put("Panel.background", Color.WHITE);
    Tu peux facilement voir toutes les propriétés par défaut avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	Enumeration<Object> e = UIManager.getDefaults().keys();
    	while (e.hasMoreElements()) {
    		String key = e.nextElement().toString();
    		if (key.contains("Panel")) { // change simplement le nom pour filtrer ;)
    			Object object = UIManager.getDefaults().get(key);
    			String type = object!=null ? object.getClass().getName() : null;
    			System.out.printf("%-60.60s : %s (%s)%n",
    					key, object, type);
    		}
    	}

    Ainsi par exemple pour avoir des JPanel blanc avec des JLabel en taille 26 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	// On change la couleur de fond par défaut des Panel :
    	UIManager.put("Panel.background", Color.WHITE);
    	// On change la police des JLabel :
    	UIManager.put("Label.font", Font.decode("Dialog bold 26"));
     
    	JOptionPane.showMessageDialog(null, "Hello");

    Malheureusement ce n'est pas si simple... Car ces propriété ne sont pas forcément respecté par tous les LookAndFeel (si tu utilises les LnF natif tu risques d'avoir de grosses différences), et beaucoup d'entre elles ne sont pas documenté voir absente par défaut (comme "Table.alternateRowColor" qui permet de définir une couleur d'alternance pour les lignes d'une JTable...). La solution étant alors de décortiquer les classes UI pour comprendre leurs mécanismes et les propriété qu'elle utilisent...



    Maintenant la solution ultime serait de se faire son propre UI et de l'associer à la clef UI de ton composant...


    C'est grosso-modo ce que fait un LookAndFeel, mais sur tous les composants

    A noter également que certain LnF (comme Metal) proposent un système de thème permettant de changer plus ou moins de chose, plus ou moins facilement : voir MetalTheme

    a++

  5. #5
    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
    Bonjour

    C'est effectivement possible, par contre simple pas franchement sur.
    va falloir que tu te mettes à envoyer un minimum au niveau primitives graphiques, prendre compte des borders & cie, plein de petits détails.
    De plus il faudra que tu fasse tout le dessin des composants par toi même.

    Une autre option pourrait être d'utiliser un Look & Feel qui met à disposition un Système de thèmes.

    Dans la liste tu as

    • Metal (le L&F standard java, dont Ocean n'est qu'un thème dispo
    • La famille des Plastic de JGoodies (qui hérite de Metal, donc se base sur le même mécanisme, il faut toutefois hériter de la classe com.jgoodies.plaf.Plastic.PlasticTheme)
    • Substance qui propose ses propres mécanismes de skin/theme

    [Edith] Grillé de loin par Adiguba, j'avais préparé le post il y a deux heures, mais une réunion est passé par là [/Piaf]

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 574
    Par défaut
    Merci, je crois que je viens de comprendre la nuance.
    En effet, UIManager est plutot approprié pour ce que je réalise pour l'instant. Merci beaucoup !

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

Discussions similaires

  1. [java 1.4] créer son look and feel
    Par orelero dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 25/04/2006, 18h29
  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