7
votes

JTABLY - Problèmes avec Boolean.class Renderer et Nimbus Look and Sentence

J'utilise un JTABLE pour visualiser certaines données. Une colonne est destinée à montrer des données booléennes via une case à cocher. Je l'ai atteint en retournant Boolean.class de ma fonction de getcolumnClass de remplacement () dans mon modèle de table.

Malheureusement, cela se traduit par une cellule avec une case à cocher mais sans couleur d'arrière-plan appropriée pour la ligne actuelle.

 original

J'ai corrigé cela en utilisant la réponse à partir de ce message: JTABLE - Type de cellule booléenne - fond

 correction boolean.class

Maintenant, j'essayais d'augmenter le contraste des rangées alternatives. J'ai atteint cela en fixant la propriété appropriée du Nimbus LaF, que j'utilise. xxx

with Set Nimbus Propriété < P> Comme vous le voyez, l'arrière-plan des cellules booléens est toujours l'ancien nimbus Table.alternerowColor couleur.

y a-t-il un moyen de changer cela? Est-ce que je fais ça complètement faux? Existe-t-il un meilleur moyen d'obtenir une couleur d'arrière-plan alternée et plus de contraste?

Edit

causé sur

Version Java "1.7.0_17" Environnement Java (TM) SE Runtime (Build 1.7.0_17-B02) VM serveur Java Hotspot (TM) (version 23.7-B01, mode mixte), OS est Ubuntu 12.04


1 commentaires

+1 Belle question, bonne prise, pourrait être une très bonne question pour les futurs lecteurs dans le cas où vous allez poster un SSCCE , court, runnable, compilable


4 Réponses :


6
votes

7 commentaires

Au début, cela avait l'air génial. Mais je ne reçois pas les mêmes résultats que vous. Ma colonne Boolean.class est excitée de ne pas ressembler aux autres. Malheureusement, je n'ai pas de SSCCE que je peux poster ici, mais je travaille dessus. EDIT: Très étrange. J'ai copié votre code en une nouvelle classe et j'ai toujours un autre look .


Tout est caché dans votre rendu, il y a quelque chose ..., s'il vous plaît assurez-vous que vous mettez Boolean (vrai / faux) à JTABLE PAS JCHECKBOX, ni quelque chose à propos de JCHECKBOX, vous n'êtes pas de chance Pour remplacer toutes les touches de JCHeckBox dans Uimanager


Comme je l'ai dit dans mon édition: même avec votre code, je reçois un résultat différent. Assez bizarre..


Version Java "1.7.0_17" Java (TM) SE Runtime Environment (Build 1.7.0_17-B02) Java Hotspot (TM) Server VM (version 23.7-B01, mode mixte), OS est Ubuntu 12.04


Ou (en lisant un commentaire à @MadProgrammer), Gui Builder a un bugs, leur cycle de vie n'a pas quelque chose avec les oracles standard JDK, ces oractions et leurs propres bugs ....


Gagnez des utilisateurs Désolé, j'ai édité des balises, je dois attendre, il y a quelques répondeurs de notre Zore, ils sont des utilisateurs *** Nix, mais de l'Australie aussi (si je me souviens bien)


Oui, je soupçonnais moi-même le constructeur de l'interface graphique Netbeans. Mais voyant que je reçois des résultats différents avec votre code, je soupçonne Java ou Ubuntu ..



7
votes

J'étais (enfin) capable de le faire fonctionner. Le secret était de modifier les valeurs par défaut avant de créer quelque chose.

Entrez la description de l'image ici < Pré> xxx


3 commentaires

Merci, a l'air bien. Malheureusement, je travaille avec la plate-forme Netbeans ici, alors "avant de changer quelque chose" pourrait être difficile à déterminer. J'essaie actuellement d'utiliser un programme d'installation de module pour le faire au démarrage et voir comment ça se passe. J'essaie aussi @mkorbel réponse depuis sa LAF indépendante.


Belle solution. J'avoue qu'il vaut mieux changer le regard du niveau de L & F, plutôt que de la sauter comme d'autres réponses suggérées.


@Adamdyga Je vois beaucoup de personnes sautant droites et mettre à jour le JTABLE pour beaucoup de raisons, j'ai un problème personnel avec cela, car il coule étroitement la solution avec l'extension. Si vous pouvez trouver des moyens de permettre de garder le code portable, il doit valoir l'effort, IMHO



0
votes

Pour résoudre ce problème, j'ai utilisé jxttable () JTable () et j'ai utilisé votre propre préparateur pour les couleurs de rangée (vous pouvez utiliser Mkorbel's One's One, pour la mettre à la table des NetBeans, il suffit de personnaliser le code pour jxxtable () composant), parce que cette solution: ​​JTABLE - type de cellule booléenne - fond ne fait pas Travailler pour des lignes multicolores pour moi. Ma plate-forme: Windows 7 32bit, version Java "1.7.0_21", Java (TM) SE Runtime Environment (Build 1.7.0_21-B11), Java hotspot (TM) Client VM (version 23.21-B01, mode mixte, partage), NetBeans IDE 7.3

Voici png (ne pas avoir eu la réputation de la réputation: D): JXTABLES () .


0 commentaires

0
votes

Immédiatement après avoir réglé Nimbus L & F, ajoutez ces lignes:

    UIManager.getLookAndFeelDefaults().put("Table:\"Table.cellRenderer\".background", Color.DARK_GRAY);
    UIManager.getLookAndFeelDefaults().put("Table.background",new ColorUIResource(Color.DARK_GRAY));
    UIManager.getLookAndFeelDefaults().put("Table.alternateRowColor",Color.DARK_GRAY.brighter());


0 commentaires