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 :

JTable couleur lignes état


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Par défaut JTable couleur lignes état
    Bonjour à tous,

    Mon problème concerne les JTables et plus précisément la gestion des lignes.
    J’ai déjà parcouru plusieurs TUTOS et lu pas mal de POSTS mais rien ne répond vraiment à ma question.

    Et je veux surtout comprendre ce que je fais et non pas copier coller bêtement du code que je trouve.
    Par exemple, les Renderer qui ont des méthodes qui prennent des paramètres, Quels sont-ils, pourquoi ce type de paramètre, à quoi correspond-t-il ?? J’ai besoin de comprendre ça de façon fonctionnelle.

    Je vais donc tâcher d’expliquer le plus clairement possible ce dont j’ai besoin.

    MON PROBLEME :

    Je manipule des objets et j’ai besoin d’afficher à l’utilisateur certains de leurs attributs.
    J’ai donc un JTable et un Modèle auquel je passe une Liste d’ objets.
    Mon JTable et son Modèle fonctionnent déjà et j’affiche bien les données que je veux à la bonne place.
    Mes objets ont des états, et en fonction de leur état, TOUTE la ligne du JTable qui affiche leurs données doit être d’une couleur ou d’une autre. (Couleur de fond ET couleur du texte)
    Pour l’exemple, vert très clair en fond et vert foncé pour le texte, etc.…
    Pareil pour chaque couleur. (Vert, Rouge, Jaune et Noir)
    Si l’état de l’objet change, alors les couleurs de la ligne changent.

    Voilà la fonction à mettre en place et je suis vraiment bloqué là.

    Encore une fois j’ai besoin d’échanger et de comprendre quels concepts il faut adopter et pourquoi on utilise telle ou telle classe.


    Merci à celles et ceux sauront éclairer ma lanterne..

  2. #2
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Par défaut
    Hello dev RC0,

    Je pense qu'il faut être encore un peu plus clair en expliquant bien ton problème.

    Ici quand tu dis :
    Par exemple, les Renderer qui ont des méthodes qui prennent des paramètres, Quels sont-ils, pourquoi ce type de paramètre, à quoi correspond-t-il ?? J’ai besoin de comprendre ça de façon fonctionnelle.
    Tu parles des méthodes dans une classe Renderer et tu veux comprendre l'utilité de ces méthodes?

    Si c'est le cas, il faut commencer par faire des simples tutos sur les Renderer et les Editors. Ensuite, on pourrait t'aider si tu as un problème dans le code.

    Ici le tuto de sun : http://docs.oracle.com/javase/tutori...nts/table.html
    Je pense que c'est n tutos complet sur l'utilisation des JTables avec les Rendrers, les Editors, les Filters....

    Awane

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Par défaut
    Bonjour,

    De retour de déplacement je prends connaissance de la réponse qui m'a été faite.
    Merci donc a toi AWANE d'avoir prit 5 minutes pour me répondre.
    J'en suis donc au même point.
    J' avais déjà lu le tuto de sun mais je ne suis malheureusement pas bilingue et je ne dois donc pas comprendre toutes les finesses e ce tuto.

    Toujours autant de questions:
    Faut-il un renderer par ligne? ou par cellule? ou 1 renderer pour tout le JTable?
    Faut-il un renderer par evennement que l'on veut créer? (1 pour le changement de couleur de la ligne, un pour je ne sais quoi d'autre?)

    C'est ce genre de mise en oeuvre que je ne comprends pas bien...

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    On a soit un renderer par type de données, qui peut être un renderer unique (pour le type de données java.lang.Object), soit un renderer spécifique par colonne.
    Soit une combinaison des deux, comme par exemple, des renderers par type (les String comme ça, les java.util.Date comme ci...) , et des renderers pour certaines colonnes pour gérer des cas particuliers, comme par exemple, telle colonne en rouge).

    Le principe global étant, pour afficher la donnée d'une cellule,
    - on détermine le renderer pour la colonne contenant cette cellule
    - s'il n'y en a pas, on détermine le renderer pour la classe de la donnée de cette colonne

    Ensuite la méthode getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) étant invoquée sur la classe de TableCellRenderer déterminée, pour la ligne et la colonne, il te faut lire l'état de l'objet (l'argument value), indépendamment de la colonne, pour déterminer les couleurs, correspondant à cet état, pour toute la ligne.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Par défaut
    Merci Joël!

    Du coup je n'ai pas encore tout bien compris, mais tu m'éclaire pas mal..
    Je vois mieux la philosophie à appliquer, je vais donc pratiquer et étudier dans ce sens.

    C'est drôle, j'ai bien conscience que tu as écris ça et ça doit tellement être évident pour toi, et moi ça fait 4 fois fois que je lis et je me dis:" Mais de quoi y m'parle là!!!???"...

    Mais je vais bientôt tout piger comme toi!

    Merci pour tes lumières.

    Je laisse le post ouvert et le flaguerai à "résolu" quand je serai capable de l'expliquer à mon tour...

    Bonne journée à tous.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 80
    Par défaut
    Ou alors je vous propose un cas d'école. Rien ne vaut un exemple très concret pour comprendre une philo...

    La base:
    Imaginons un tableau qui affiche des tâches à faire.

    Ce tableau contient un modele qui lui même contient une liste d'objets Taches.

    Un objet Taches est constitué d'un numéro, d'un libéllé, d'une date de début et d'une date de fin.


    Ce que l'on veut:

    Clic droit sur la ligne d'une tache -> "Démarrer"
    La ligne devient verte et un compteur se declenche.
    Si la tache n'a pas été terminée avant sa date de fin, la ligne devient rouge.
    Quand la tache est terminée, la ligne devient grise.


    Petit exemple parlant.

    En comprennant comment faire ça, j' appréhenderai mieux le concept du renderer et les objets à mettre en oeuvre..

Discussions similaires

  1. [VB.net] Changer couleur ligne DataGrid
    Par bguihal dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/07/2016, 07h54
  2. JTable & Couleur de ligne & Tri
    Par somnix dans le forum Composants
    Réponses: 2
    Dernier message: 10/01/2013, 18h19
  3. JTable - Couleur de séléction d'une ligne
    Par nabich dans le forum Composants
    Réponses: 19
    Dernier message: 27/12/2010, 23h24
  4. Réponses: 3
    Dernier message: 31/03/2009, 05h59
  5. [JDBTable][JTable] couleur d'une ligne
    Par thief dans le forum Composants
    Réponses: 6
    Dernier message: 21/03/2006, 10h58

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