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 :

Pb SWING: Comportement JTable différent suivant les UIManager appelés


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 5
    Par défaut Pb SWING: Comportement JTable différent suivant les UIManager appelés
    Je travaille avec la version : java SE 6 Update 10 RC (le dernier cri)
    Pour un code identique, Le header de mes JTable se comporte différemment suivant le UIManager actif:
    Avec le look windows:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UIManager.setLookAndFeel("WindowsLookAndFeel")
    et le look Nimbus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UIManager.setLookAndFeel("NimbusLookAndFeel")
    Impossible de centrer les entête de mes JTable
    Alors qu'avec le look natif Java et sans toucher bien sur au code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.setLookAndFeel("MetalLookAndFeel");
    Mes entête sont bien centrés.
    Il y a aussi quelques autres différences de comportement au niveau des lignes surlignées, et de la police de caractère utilisée dans mes en tête qui n'est pas prise en compte dans les 2 premiers look.
    Nimbus est un nouveau look java, on peut comprendre qu'il y ait des failles, mais pour le look windows, c'est curieux.
    Bref c'est presque du détail, mais quelqu'un a-t-il une réponse ?? Ou est-ce un petit bug

  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,


    Et quel est le code en question ?

    a++

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    table.getTableHeader().setFont(new Font("Times New Roman", 1, 13));
    table.getTableHeader().setForeground(Color.BLUE);
    table.getTableHeader().setBackground(Color.CYAN);
    table.getTableHeader().setAlignmentX(SwingConstants.CENTER);
    Au niveau du setAlignment(int i), le LF metal java natif marche bien lorsque je le modifie, mais avec le LF windows ou Nimbus, le header est systèmatiquement aligné à gauche, alors que il devrait être au centre des colonnes comme il l'est dans le look java.
    Les polices aussi, si je la modifie, rien ne se passe au niveau des header, sauf sous le LF metal.
    Et aussi le BackGround ne se modifie pas avec les LF windows et Nimbus, alors qu'avec Metal tout est OK ..

  4. #4
    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
    Deux trois précisions:

    En ce qui concerne le background c'est normal, le L&F Windows utilises quasi uniquement des bitmaps fournis par windows, le je vois mal appliquer une couleur par dessus...

    Ensuite tout dépend de l'implémentation du renderer utilisé par l'UIDelegate fourni par le look and feel.
    Dans le cas du TableHeader d'une JTable, il s'agit d'un Renderer spécifié dans les classes du L&F, et c'est une classe privée.

    En ce qui concerne l'alignement à gauche c'est idem. Le seul moyen pour toi est de créer une classe utilisant le renderer par défaut pour renvoyer le composant (qui sera probablement un JLabel ou un truc dans le style, à toi de fouiller un peu par réflexion)

    En ce qui concerne Nimbus, les renderers doivent être écris de façon particulière. cf http://www.fnogol.de/archives/2008/0...er-for-nimbus/ , celà doit probablement s'appliquer aussi aux renderers des tables.

    Enfin bon ensuite j'ai la flemme d'aller éplucher le tracker de sun pour vérifier s'il y a déjà un bug de déposé ou pas.

Discussions similaires

  1. [AC-2003] comportement différent suivant les pc - liste paramétrée
    Par Dermochelys dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 04/04/2011, 13h35
  2. Liste déroulante avec comportement différent suivant les navigateurs
    Par smfoa dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 30/01/2011, 11h55
  3. Réponses: 0
    Dernier message: 25/10/2008, 10h50
  4. Réponses: 15
    Dernier message: 19/06/2006, 19h25

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