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 :

Probleme couleur de lignes dans un JTable


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Probleme couleur de lignes dans un JTable
    Bonjour,
    J'ai poster avant dans pour le meme probleme que j'ai, bon j'ai consulter des reponses sur le net a ce sujet mais je suis pas arriver a resoudre mon probleme, en faite j'ai pas pu adapter ce que j'ai trouver a mon cas.
    Ce que je veu faire en faite c'est modifier la couleur du foreground ou background de certaines ligne de mon JTable tout en sachant que ma table s'execute tout x temps et chaque nouveau element s'affiche en premier dans mon tableau, d'ou j'aimerai bien le/les distinguer des anciennes lignes .
    J'ai essayer d'adapter un code trouver dans votre site mais bon le code marche(il change uniquement le font de la ligne selectionner).
    Moi ce que j'aimerai bien faire c'est changer le font des lignes de 0 a la 30ieme ligne(par exemple). Voici mon code actuelle quel modification je doit faire pour effectuer les changement que je veux :


    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
    public static void ajout2(String a1, String a2, String a4, String a5, String a6){
    Object[] vals = {a1,a2, a4,a5,a6};
    model.insertRow(0,vals);// permet l'ajout depuis la 1ere ligne de mon tableau
    }
    public static void ajout(){
    annonce.setFont(new java.awt.Font("Dialog", 0, 15));
    annonce.setDebugGraphicsOptions(0);
    //annonce.setToolTipText("fff");
    annonce.setModel(model);
    {
    model.addColumn("Time");
    model.addColumn("Description");
    //model.addColumn("Arsmodell");
    model.addColumn("Pris");
    model.addColumn("Location");
    model.addColumn("link");
    }
    annonce.getTableHeader().setReorderingAllowed( false );
    annonce.getTableHeader().setResizingAllowed(false);
    annonce.getTableHeader().setFont(new java.awt.Font("Dialog", 1, 17));
    /** TableCellRenderer tbc = getTableCellRenderer();
    TableCellRenderer tbch = getTableHeaderRenderer();
    for (int i = 0; i < model.getColumnCount(); i++)
    {
    TableColumn tc = annonce.getColumnModel().getColumn( i );
     
    tc.setCellRenderer( tbc );
    tc.setHeaderRenderer( tbch );
    }*/
     
    }
    Donc voici mon code qui permet d'ajouter au debut du tableau tous les noveaux elements.
    J'ai regarder les anciennes discussions dans developpez.net mais j'ai pas trouver de solutions.
    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 927
    Points
    22 927
    Billets dans le blog
    53
    Par défaut
    Il te faut definir ton propre TableCellRenderer pour afficher les lignes que tu souhaites de maniere differente. Apres il te faut trouver un moyen de stocker la distinction entre les nouvelles lignes et les anciennes et de rendre cette information accessible au renderer.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Encore en panne
    Je cherche une documentation detailler sur les JTable mais j'en trouve pas. Le site de sun et vraiment pas tres expliquer. Pouvez-vous donc me fournir la documentation necessaire.
    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 867
    Points : 22 927
    Points
    22 927
    Billets dans le blog
    53
    Par défaut
    Tu as la Javadoc de la JTable qui peut te servir de point d'entree a cette classe et aux classes associees. Et il y a egalement la page du didacticiel Java sur les tables.

    Il est vrai que depuis la reorganisation de leur site Java, les donnees sont un peu moins facile a trouver (cliquer sur API sur le menu du haut de la page ou sur APIs, Documentations ou Tutorials dans le cadre vertical sur la droite de la page).

  5. #5
    Membre éclairé
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Points : 704
    Points
    704
    Par défaut
    bonjour hlimaiem

    je croit que tu utilise mal la JTable. peut etre je me trompe mais pour moi ton code est vraiment bizzare que je comprent pas ce que tu fait.
    poste en plus la prochaine fois :-)

    qu'est ce que j'ai compri de ce que tu dit c'est que tu veut colorier les ligne d'un JTable suivant un attribut.
    si moi je dois faire ca, je le fais dans le prepareRenderer.
    je viens de vite faire ca comme ca tu voit qu'est ce que je veut dire

    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
     
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.TableCellRenderer;
    import java.awt.EventQueue;
    import java.awt.HeadlessException;
    import java.awt.Component;
    import java.awt.Color;
     
    /**
     * Created by IntelliJ IDEA.
     * User: bebe
     */
    public class MyColoredTable extends JFrame {
     
        public MyColoredTable() throws HeadlessException {
     
            JTable view = new JTable(new MyStupidModel()) {
                public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
                    Component c = super.prepareRenderer(renderer, row, column);    //To change body of overridden methods use File | Settings | File Templates.
                    Object value = getValueAt(row, 2);
                    if ("F".equals(value)) {
                        c.setBackground(Color.PINK);
                    } else if ("M".equals(value)) {
                        c.setBackground(Color.CYAN);
                    } else {
                        c.setBackground(getBackground());
                    }
     
                    return c;
                }
            };
            add(new JScrollPane(view));
     
            setSize(540, 400);
     
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
     
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new MyColoredTable().setVisible(true);
                }
            });
        }
    }

    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
    60
    61
     
    import javax.swing.table.TableModel;
    import javax.swing.event.TableModelListener;
    import java.util.Random;
     
    /**
     * Created by IntelliJ IDEA.
     * User: bebe
     */
    public class MyStupidModel implements TableModel {
     
        private Object data[][] = new Object[10][3];
        private String[] columnNames = {"Id", "Name", "Gender"};
     
        public MyStupidModel() {
            Random r = new Random();
            String[] genders = {"M", "F", "U"};
            for (int i = 0; i<10; i++) {
                data[i][0] = r.nextInt(1000);
                data[i][1] = Long.toString(Math.abs(r.nextLong()), 36);
                data[i][2] = genders[i%3];
            }
        }
     
        public int getRowCount() {
            return data.length;
        }
     
        public int getColumnCount() {
            // la dernier colone n'est pas afficher. elel sert juste a mettre les couleurs.
            return data[0].length-1;
        }
     
        public String getColumnName(int columnIndex) {
            return columnNames[columnIndex];
        }
     
        public Class<?> getColumnClass(int columnIndex) {
            return (columnIndex ==0)? Integer.class:String.class;  //To change body of implemented methods use File | Settings | File Templates.
        }
     
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return false;  //To change body of implemented methods use File | Settings | File Templates.
        }
     
        public Object getValueAt(int rowIndex, int columnIndex) {
            return data[rowIndex][columnIndex];  //To change body of implemented methods use File | Settings | File Templates.
        }
     
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
            //To change body of implemented methods use File | Settings | File Templates.
        }
     
        public void addTableModelListener(TableModelListener l) {
            //To change body of implemented methods use File | Settings | File Templates.
        }
     
        public void removeTableModelListener(TableModelListener l) {
            //To change body of implemented methods use File | Settings | File Templates.
        }
    }

    en meme temp dans l'exemple ici tu peux voir comment marche un model.


    comme bouye l'a dit, avec un TableCellRenderer ca va marcher mais a cause des renderer par defaut ca complique un peu les chose.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Explication Font d'une ligne de Jtable
    Voila aparament je me suis pas bien expliquer.
    Voila ma jtable est dynamique, du faite qu'a des temps variables j'ai de nouveaux enregistrement dans ma JTable (que je doit les ajouter au debut de la table).
    Donc je doit modifier quelque chose (foreground ou background) des nouvelles lignes insserer dans mon tableau par exemple de la ligne 0 j'usqu'a 44ieme lignes (qui doivent avoir de couleurs differentes).
    C'est vrai mon code et un peut bizarre puisque j'ai essayer de tester plusieurs trucs trouver sur internet mais qui n'ont pas regler mon probleme.
    Je connait pas les fonctions des (CellRenderer...).
    Merci de votre aide.

  7. #7
    Membre éclairé
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Points : 704
    Points
    704
    Par défaut
    tu a teste mon exemple ?

    et comment tu gere ton modele?

Discussions similaires

  1. [JTable] suppression d'une ligne dans un JTable?
    Par hby dans le forum Composants
    Réponses: 14
    Dernier message: 15/03/2007, 15h44
  2. [JTable] Mettre en couleur une ligne de ma JTable
    Par cedricbr dans le forum Composants
    Réponses: 3
    Dernier message: 03/03/2006, 13h47
  3. [JTable] couleur de sélection dans une JTable
    Par spoutyoyo dans le forum Composants
    Réponses: 7
    Dernier message: 06/12/2004, 12h43
  4. Sélection d'une ligne dans un JTable
    Par dam21 dans le forum Composants
    Réponses: 3
    Dernier message: 28/07/2004, 13h57
  5. Couleur des lignes dans DBGrid
    Par eddie dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/06/2002, 19h15

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