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 disabled et thème vista


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Par défaut JComboBox disabled et thème vista
    Hello,

    Je débute en Swing... mon problème est sûrement plus général que juste lié aux ComboBoxes, mais je le mets là, libre à vous de le déplacer ailleurs.

    Bref, voilà mon soucis :
    - j'ai une ComboBox disabled
    - j'ai forcé la propriété ComboBox.disabledBackground à RED
    - sous Windows Vista, avec le thème "Windows Vista Basic" la combo n'est pas RED
    - sous Windows Vista, avec tous les autres thèmes, la combo est bien rouge !

    donc... heu ?!?

    le code :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    import java.awt.Color;
    import java.awt.FlowLayout;
     
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
     
    public class ComboVista extends JFrame  {
     
    	private JComboBox box;
     
    	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
     
    		UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
     
    		UIManager.getDefaults().put( "ComboBox.disabledBackground", Color.RED );
     
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				ComboVista cv = new ComboVista();
    				cv.setVisible(true);
    			}
    		});
    	}
     
    	public ComboVista() {
    		super();
    		build();
    	}
     
    	public void build() {
    		setTitle("Test Combo & Vista"); 
    		setSize(250, 70);
    		setLocationRelativeTo(null); 
    		setResizable(false);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    		setContentPane(buildContentPane());
    	}
     
    	private JPanel buildContentPane() {
     
    		JPanel panel = new JPanel();
    		panel.setLayout(new FlowLayout(FlowLayout.LEFT));
     
    		box = new JComboBox() ;
    		box.addItem("disabled") ;
    		box.setEnabled(false) ;
    		panel.add(box) ;	
     
    		return panel;
     
    	}
     
     
    }

    résultat sous Windows Vista avec le thème "Windows Standard" :


    résultat sous Windows Vista avec le thème "Windows Vista Basic" :



    Et la question est évidemment : comment faire pour que ça marche aussi avec le thème Vista ?!?

    Merci.

  2. #2
    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,


    Malheureusement les LookAndFeel ne sont pas tenu de respecter toutes les propriétés de base de l'UIManager, ni toutes les propriété du composant.

    a++

  3. #3
    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
    Puis d'abord un fond rouge comme ça c'est juste tout moche. Eventuellement tu peux te diriger vers une décoration supplémentaire (genre une mini icône à coté ou par dessus en passant par un JXLayer)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Par défaut
    je vous rassure, le fond rouge c'était juste pour l'exemple (et pour tester que mes modifs étaient vraiment pas prises en compte).

    mais ça répond pas vraiment à la question, à laquelle je n'ai toujours pas vraiment de réponse d'ailleurs...

  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
    Et tu n'en auras pas. Les composants des L&F natifs sont basés sur des images capturées offscreen de réels composants natifs. Et changer la couleur d'un image n'est pas franchement chose aisée. Donc utiliser un L&F natif impose un bon paquet de contraintes. Tu aurais le même problème sous XP ou encore Gnome.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Par défaut
    heu oui... sauf qu'on voit bien dans mon exemple que le même code fonctionne avec XP et pas avec Vista ?!?

  7. #7
    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
    Petite correction si tu préfères :
    Citation Envoyé par sinok Voir le message
    Tu aurais le même problème sous XP avec le thème XP, ou encore Gnome.

    Tu utilises un LnF système qui peut varier d'un OS à l'autre, et donc tu peux avoir des comportements différents...

    a++

Discussions similaires

  1. Comment installer un thème sous Vista
    Par razily dans le forum Windows Vista
    Réponses: 0
    Dernier message: 19/03/2010, 01h47
  2. Problème de dimensions avec le thème Vista.
    Par Cravis dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 24/07/2009, 17h34
  3. thèmes pour vista
    Par gesor dans le forum Windows Vista
    Réponses: 0
    Dernier message: 16/09/2008, 21h38
  4. Thème Vista sur XP
    Par XREvo dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 02/04/2008, 11h46
  5. Couleur d'une JComboBox disabled
    Par ced dans le forum Composants
    Réponses: 6
    Dernier message: 06/01/2004, 15h33

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