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 :

Dessiner un tableau


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de aljessy
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 319
    Par défaut Dessiner un tableau
    Bonjour j'aimerais avoir un tableau qui ressemble à l'image ci jointe et ainsi lorsque l'on insere les données dans ce tableau qu'il y'ai toujours au moins une ligne non remplie.
    Images attachées Images attachées  

  2. #2
    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
    Pour les couleurs alternées: il va te falloir écrire un renderer qui suivant le numéro de la ligne applique l'une ou l'autre des couleurs. Renderer héritant de DefaultCellRenderer et redéinissant la méthode getTableCellRendererComponent. cf http://baptiste-wicht.developpez.com...ing/jtable/#L5


    Une chose dans ce genre

    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
     
    public class AlternateRowRenderer extends DefaultTableCellRenderer {
     
        private final static Color LIGHT_ROW_BG_COLOR = Color.white;
        private final static Color DARKER_ROW_BG_COLOR = Color.yellow.lighter().lighter();
     
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
     
            //color remains the same while selected
            if (isSelected) {
                comp.setForeground(table.getSelectionForeground());
                comp.setBackground(table.getSelectionBackground());
            } else {
                Color bgColor = null;
                Color fgColor = null;            
                if (row%2 != 0) //once out of two rows, change color
                    bgColor = AlternateRowRenderer.LIGHT_ROW_BG_COLOR;
                else
                {
                    bgColor = AlternateRowRenderer.DARKER_ROW_BG_COLOR;
                }
                comp.setBackground(bgColor);
                comp.setForeground(table.getForeground());
            }
            return c;
        }
    }
    Et le placer sur la table de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maTable.setDefaultRenderer(Object.class, new AlternateRowRenderer());
    Si tu dois avoir d'autres renderers sur ta JTable, il faudra que tous tes renderers héritent de l'AlternateRowRenderer et utilisent bien le retour de super.getTableCellRendererComponent dans leur getTableCellRendererComponent.

    Par exemple voici un renderer mettant en rouge+gras le contenu d'une cellule si celui si est entier et vaut moins que 0:


    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
    public class LessThanZeroRenderer extends AlternateRowRenderer {
     
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
     
            Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if (value.getClass() = Integer.class) {
                Integer i = (Integer) value;
                if ( i.intValue() < 0) {
                    c.setForeground(Color.red);
                    c.setFont(c.getFont().deriveFont(Font.BOLD);
                }
            }
            return c;
        }
    }

    Pour l'histoire de la ligne supplémentaire, il suffit que ton modèle la contienne. Comment as tu défini ton modèle?

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Pour les couleurs en alternances, il y a plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.put("Table.alternateRowColor", Color.decode("#E1E4F2")); // Couleur alternative sur ligne

  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
    Citation Envoyé par peofofo Voir le message
    Pour les couleurs en alternances, il y a plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UIManager.put("Table.alternateRowColor", Color.decode("#E1E4F2")); // Couleur alternative sur ligne
    Toutefois ça dépendra grandement de ce que fera le Look&Feel. Il n'est absolument pas obligé de respecter cette clef.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dessiner un tableau
    Par sali lala dans le forum C++Builder
    Réponses: 1
    Dernier message: 19/01/2007, 10h45
  2. Dessiner un tableau sur un état
    Par Manu14400 dans le forum IHM
    Réponses: 5
    Dernier message: 10/08/2006, 11h47
  3. dessiner un tableau dynamique
    Par desci dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 11/07/2006, 13h39
  4. Dessiner un tableau dans la console
    Par micatmidog dans le forum C
    Réponses: 7
    Dernier message: 25/01/2006, 20h15
  5. dessiner un tableau dans WORD?
    Par sali dans le forum VBA Word
    Réponses: 2
    Dernier message: 26/01/2005, 14h11

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