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 :

Titre non affiché dans les headers de JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 549
    Par défaut Titre non affiché dans les headers de JTable
    salut,


    j'ai des checkbox qui sont affiché dans les headers d'une jTable, mais le nom des colonnes n'est pas affiché.

    je peux toujours en mettre un global dans getTableCellRendererComponent mais je veux pas que toute mes colonnes est le même nom

    une idée?

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    public class JTableHeaderCheckBox {
     
        Object colNames[] = {"Journée", "Am", "Pm"};
        Object[][] data = {{"L", false, false},
            {"M", false, false},
            {"M", false, false},
            {"J", false, false},
            {"V", false, false},
            {"S", false, false},
            {"D", false, false}};
        DefaultTableModel dtm;
        JTable table;
     
        public void buildGUI() {
            dtm = new DefaultTableModel(data, colNames);
            table = new JTable(dtm);
     
            JScrollPane sp = new JScrollPane(table);
     
            TableColumn tc = table.getColumnModel().getColumn(1);
            tc.setCellEditor(table.getDefaultEditor(Boolean.class));
            tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));
            tc.setHeaderRenderer(new CheckBoxHeader(new MyItemListener()));
     
            TableColumn tc2 = table.getColumnModel().getColumn(2);
            tc2.setCellEditor(table.getDefaultEditor(Boolean.class));
            tc2.setCellRenderer(table.getDefaultRenderer(Boolean.class));
            tc2.setHeaderRenderer(new CheckBoxHeader(new MyItemListener()));
     
     
            JFrame f = new JFrame();
            f.getContentPane().add(sp);
            f.pack();
            f.setLocationRelativeTo(null);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setVisible(true);
        }
     
        class MyItemListener implements ItemListener {
     
            public void itemStateChanged(ItemEvent e) {
                Object source = e.getSource();
                if (source instanceof AbstractButton == false) {
                    return;
                }
     
                int column = ((CheckBoxHeader) source).getColumn();
     
                boolean checked = e.getStateChange() == ItemEvent.SELECTED;
                for (int x = 0, y = table.getRowCount(); x < y; x++) {
                    table.setValueAt(new Boolean(checked), x, column);
                }
            }
        }
     
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
     
                public void run() {
                    new JTableHeaderCheckBox().buildGUI();
                }
            });
        }
    }
     
    class CheckBoxHeader extends JCheckBox implements TableCellRenderer, MouseListener {
     
        protected CheckBoxHeader rendererComponent;
        protected int column;
        protected boolean mousePressed = false;
     
        public CheckBoxHeader(ItemListener itemListener) {
            rendererComponent = this;
            rendererComponent.addItemListener(itemListener);
        }
     
        public Component getTableCellRendererComponent(
                JTable table, Object value,
                boolean isSelected, boolean hasFocus, int row, int column) {
            if (table != null) {
                JTableHeader header = table.getTableHeader();
                if (header != null) {
                    rendererComponent.setForeground(header.getForeground());
                    rendererComponent.setBackground(header.getBackground());
                    rendererComponent.setFont(header.getFont());
                    header.addMouseListener(rendererComponent);
                }
            }
            setColumn(column);
            // rendererComponent.setText("Check All");
            setBorder(UIManager.getBorder("TableHeader.cellBorder"));
            return rendererComponent;
        }
    	...
    	...
    }

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Si tu veux que ton renderer affiche un texte, il faut peut être le lui préciser ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rendererComponent.setText(value.toString());

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 549
    Par défaut
    Citation Envoyé par -gma- Voir le message
    Si tu veux que ton renderer affiche un texte, il faut peut être le lui préciser ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rendererComponent.setText(value.toString());
    ta lu l'énoncé et le code?

  4. #4
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Oui, je l'ai même relu car j'avais un peu du mal avec ta syntaxe (je ne parle pas du code).

    Donc j'ai cru comprendre que tu voulais afficher "Am" et "Pm" dans les deuxième et troisième colonnes en plus de la case de la checkbox mais apparemment c'est autre chose ?

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Citation Envoyé par lequebecois79 Voir le message
    j'ai des checkbox qui sont affiché dans les headers d'une jTable, mais le nom des colonnes n'est pas affiché.
    Citation Envoyé par -gma- Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rendererComponent.setText(value.toString());
    Ca me semble parfaitement répondre à la question !

    Sinon soit plus clair

    Citation Envoyé par lequebecois79 Voir le message
    je peux toujours en mettre un global dans getTableCellRendererComponent mais je veux pas que toute mes colonnes est le même nom

    une idée?
    Utiliser le paramètre value ? Comme te l'a indiqué -gma- ?


    Citation Envoyé par lequebecois79 Voir le message
    ta lu l'énoncé et le code?
    Nous pourrions te retourner la question !
    Plutôt que de répondre aussi simplement, tu pourrais étayer ton problème ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Champ type de contenu non affiché dans les listes en création
    Par lflorca dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 23/10/2012, 10h54
  2. Réponses: 4
    Dernier message: 09/04/2009, 13h32
  3. [Spip] Tableau non affiché dans la partie "Articles les plus récents"
    Par Gigi95 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 27/09/2007, 12h27
  4. Pas de callback dans les headers en .c
    Par matcocopunch dans le forum OpenGL
    Réponses: 6
    Dernier message: 12/02/2006, 17h46
  5. Builder/Interb :"Non Concordance dans les paquets de do
    Par pjtuloup dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/03/2005, 09h53

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