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 changer la taille des colonnes


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    automaticien
    Inscrit en
    Novembre 2016
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : automaticien

    Informations forums :
    Inscription : Novembre 2016
    Messages : 68
    Par défaut Jtable changer la taille des colonnes
    Bonjour ,

    J'ai plusieurs questions au sujet de netbeans.
    En gros mon logiciel est un logiciel de rapport ou je peux rentrer la date, nom, et le rapport est qui est ensuite enregistré dans MySQL et affiché sur un JTable.

    1/Tout d'abord je voulais savoir comment je peux incrémenter une date automatiquement lorsque la personne rentre son rapport, au lieu qu'il rentre la date lui même.

    2/ Je voulais aussi savoir comment je peux changer les tailles des colonnes, j'aimerai reduire la colonne "date" et "nom" et augmenter la taille de la colonne "rapport" (texte beaucoup plus long).

    3/ j'aimerai aussi savoir si c'est possible que si le texte est trop long qui revienne à la ligne automatique sur un JTable est aussi sur JtextField.

    Merci pour votre aide

    Julien

  2. #2
    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,

    Citation Envoyé par juliendu67117 Voir le message
    1/Tout d'abord je voulais savoir comment je peux incrémenter une date automatiquement lorsque la personne rentre son rapport, au lieu qu'il rentre la date lui même.
    Incrémenter une date automatiquement, c'est-à-dire ? Prendre le jour suivant ?

    Pour le jour suivant, avec un java.time.LocalDate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date = date.plusDays(1);
    Sinon, pour la date du jour, ce qui me semble plus adapter pour dater un rapport qu'on saisi : date = LocalDate.now();A noter qu'un composant calendrier comme le JDateChooser de Toedter permet de saisir facilement une date.


    Citation Envoyé par juliendu67117 Voir le message
    2/ Je voulais aussi savoir comment je peux changer les tailles des colonnes, j'aimerai reduire la colonne "date" et "nom" et augmenter la taille de la colonne "rapport" (texte beaucoup plus long).
    On peut affecter la taille d'une colonne :
    1. par l'emploi de méthodes setPreferedWitdh(), setMaxWidth() et setMinWidth() sur le modèle de colonne (instance de classe TableColumn), qu'on obtient par table.getColumnModel().getColumn(indexDeColonne), ce qui permet en quelque sorte de paramétrer les modes de dimensionnement automatique
    2. on peut forcer la taille (en désactivant le dimensionnement automatique) avec la méthode setWidth(), sur la même classe.


    Citation Envoyé par juliendu67117 Voir le message
    3/ j'aimerai aussi savoir si c'est possible que si le texte est trop long qui revienne à la ligne automatique sur un JTable est aussi sur JtextField.
    Pour le JTextField, non. Il faut utiliser un JTextArea à la place.
    Pour le renvoi à la ligne dans la JTable, c'est un peu plus complexe : il faut écrire un TableCellRenderer déjà, dédié, et, éventuellement, un TableCellEditor. On pourrait utiliser l'astuce du html dans un label, mais ça oblige à gérer les styles. Mais il faut gérer de toute manière la hauteur de ligne soi-même (table.setRowHeight(index, hauteur);) et le calcul de la hauteur n'est pas simple en lui-même, mais encore moins si on veut gérer des tris ou des filtres.
    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.

  3. #3
    Membre confirmé
    Homme Profil pro
    automaticien
    Inscrit en
    Novembre 2016
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : automaticien

    Informations forums :
    Inscription : Novembre 2016
    Messages : 68
    Par défaut
    [Bonjours

    merci pour ta réponse.
    Enfaite j'aimerai que lorsqu'une personne valide le rapport il y a une date avec l'heure de la validation qui s'affiche dans le Jtable.

    Pour changer la taille des colonnes, je n'arrive pas à modifier le programme de la jtable elle est grisé.

    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
         tbl_rapport_elec.setModel(new javax.swing.table.DefaultTableModel(
                new Object [][] {
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null},
                    {null, null, null, null, null}
                },
                new String [] {
                    "id", "Date", "Nom", "Poste", "Rapport"
                }
            ) {
                Class[] types = new Class [] {
                    java.lang.Object.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
                };
                boolean[] canEdit = new boolean [] {
                    false, false, false, false, false
                };
     
                public Class getColumnClass(int columnIndex) {
                    return types [columnIndex];
                }
     
                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return canEdit [columnIndex];
                }
            });

  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
    Citation Envoyé par juliendu67117 Voir le message
    Enfaite j'aimerai que lorsqu'une personne valide le rapport il y a une date avec l'heure de la validation qui s'affiche dans le Jtable.
    Pour avoir la date et l'heure au moment de la validation :

    • avec java.time : LocalDateTime date = LocalDateTime.now();,
    • ou avec java.util.date Date date = new Date();

    En revanche, pour l'afficher proprement dans la JTable, il faudra la formater (voir DateTimeFormatter pour java.time.LocalDateTime, .ou SimpleDateFormat pour java.util.Date.
    En amont, en stockant la String résultat dans la JTable (mais ça peut te poser différents problèmes, par exemple si tu veux trier par date, ou te servir des données du modèle de la JTable comme source pour le stockage en base. Sinon, il faut utiliser un TableCellRenderer dédié.

    Par exemple, avec java.time.LocalDateTime :

    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
    		TableCellRenderer localDateTimeTableCellRenderer = new DefaultTableCellRenderer() {
     
    		    final DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy"); // ici le format que tu veux pour l'affichage
     
    		    public Component getTableCellRendererComponent(JTable table,
    		            Object value, boolean isSelected, boolean hasFocus,
    		            int row, int column) {
    		        if( value instanceof LocalDateTime) {
    		            value = format.format((LocalDateTime)value);
    		        }
    		        return super.getTableCellRendererComponent(table, value, isSelected,
    		                hasFocus, row, column);
    		    }
    		};
     
    table.setDefaultRenderer(LocalDateTime.class, localDateTimeTableCellRenderer);
     
    // ou si tu veux l'affecter à une colonne en particulier : table.getColumnModel().getColumn(indexDeLaColonne).setCellRenderer(localDateTimeTableCellRenderer);

    et avec java.util.Date
    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
    TableCellRenderer dateTableCellRenderer = new DefaultTableCellRenderer() {
     
        final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); // ici le format que tu veux pour l'affichage
     
        public Component getTableCellRendererComponent(JTable table,
                Object value, boolean isSelected, boolean hasFocus,
                int row, int column) {
            if( value instanceof Date) {
                value = format.format(value);
            }
            return super.getTableCellRendererComponent(table, value, isSelected,
                    hasFocus, row, column);
        }
    };
    table.setDefaultRenderer(Date.class, dateTableCellRenderer);
     
    // ou si tu veux l'affecter à une colonne en particulier : table.getColumnModel().getColumn(indexDeLaColonne).setCellRenderer(dateTableCellRenderer);




    Citation Envoyé par juliendu67117 Voir le message
    Pour changer la taille des colonnes, je n'arrive pas à modifier le programme de la jtable elle est grisé.
    Sous NetBeans, si tu as fait ton interface avec la palette, tu ne peux pas modifier le .java généré directement. Il faut passer par le menu contextuel (bouton droit), tu as une option "Customize code", qui te permet de modifier les méthodes créées par la palette de NetBeans. Voir exemple dans ce message.
    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é
    Homme Profil pro
    automaticien
    Inscrit en
    Novembre 2016
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : automaticien

    Informations forums :
    Inscription : Novembre 2016
    Messages : 68
    Par défaut
    Merci pour ta réponse

    Pour ajuster la taille des colonnes j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tbl_rapport_elec.getColumnModel().getColumn(date).setPreferredWidth(10);
    Mais il me souligne le mot date alors que c'est le nom de la colonnes

  6. #6
    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
    Le paramètre à passer, ce n'est pas le nom de la colonne, mais l'index (un numéro, 0 <= index < nombre de colonnes). Quand bien même ce serait le nom, il faudrait qu'il soit indiqué entre guillement, parce que c'est une chaîne de caractères ! D'ailleurs tu peux obtenir l'index d'une colonne à partir de son nom : table.getColumnModel().getColumnIndex("date"), si "date" est le nom d'une colonne (le nom, c'est le titre).
    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.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/03/2010, 16h03
  2. [JTable]Comment changer le nom des colonnes
    Par Core8 dans le forum Composants
    Réponses: 8
    Dernier message: 28/10/2009, 01h13
  3. [Swing][JTable]Tailles des colonnes du tableau
    Par LordBlaize dans le forum Composants
    Réponses: 6
    Dernier message: 20/02/2006, 17h46
  4. [JTable] Changer la taille des colonnes
    Par lilou77 dans le forum Composants
    Réponses: 2
    Dernier message: 20/09/2005, 10h26
  5. [JTable] redimensionner et changer le titre des colonnes
    Par Ghost Dog dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 19/04/2005, 20h31

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