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 :

Re dimensionner les colonnes d'un JTableModel


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut Re dimensionner les colonnes d'un JTableModel
    Salut à tous les amis,
    Je viens vers vous pour une aide. Je tente d'appliquer des dimensions à certaines colonnes de ma Jtable alors j'ai tenté de mettre en plce cette procédure :
    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
    private void initFournisseur(){
    			Thread t = new Thread(){
    		public void run(){
    ArrayList<FournisseursMYSQL> list = DAOFournisseurMYSQL.getListFournisseursMYSQL();
    		lister = list;
      	        Table.setModel(new FournisseurTableModel(lister));
    	TableColumnModel tcm = Table.getColumnModel();
    	Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    	Table.getColumnModel().getColumn(0).setPreferredWidth(27);
    	Table.getColumnModel().getColumn(1).setPreferredWidth(200);
    	Table.getColumnModel().getColumn(2).setPreferredWidth(100);
    	Table.getColumnModel().getColumn(3).setPreferredWidth(90);
    	}
    	};
    			t.start();
    		}
    Ce bout de code fonctionne. Par contre, j'ai fais ceci pour une plus de clarté :
    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
    //here to set and change the column width
    TableColumn column = null;
    for (int i = 0; i < 4; i++){
    column = Table.getColumnModel().getColumn(i);
    column.sizeWidthToFit();
    	if (i == 0){
    column.setPreferredWidth(10);//first column is smaller
    column.setResizable(false);//Allow not resizable
    	}
    	if (i == 1){
    	column.setPreferredWidth(200);//second column is bigger
    	column.setResizable(false);//Allow not resizable
    }
    	if (i == 2){
    	column.setPreferredWidth(10);//third column is smaller
    	column.setResizable(false);//Allow not resizable
    	}
    	if (i == 3){
    	column.setPreferredWidth(75);//fourth column is less bigger
    	column.setResizable(false);//Allow not resizable
    	}
    	else{
    	column.setPreferredWidth(50);
    		}
    	}
    Mais je constate que ça ne fonctionne pas. Avez-vous une explication ?

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut Peut-être
    Avez-vous essayé de déplacer le setResizable(false) après la boucle en enlevant chaque ligne qui le concerne à l'intérieur de la boucle ?
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    Citation Envoyé par pursang Voir le message
    Avez-vous essayé de déplacer le setResizable(false) après la boucle en enlevant chaque ligne qui le concerne à l'intérieur de la boucle ?
    Heu ! J'ai pas très bien compris. J'enlève le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    column.setResizable(false);//Allow not resizable
    de chaque ligne et je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    à quel niveau dans le code ?

  4. #4
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut Peut-être que c'est ça
    En fait, lorsque vous faites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table.getColumnModel().getColumn(0).setPrefferedWidth(x)
    , vous agissez réellement et directement sur la largeur de la colonne de Table.
    Mais si vous faites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableColumn column = Table.getColumnModel().getColumn(0)
    , puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    column.setPrefferedSize(x)
    , vous agissez sur column qui est une copie de la colonne de Table. Donc vous ne changez pas la largeur de la colonne de Table, mais celle de sa copie.
    En claire, si dans votre code vous remplacez toutes les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    column.setPrefferedSize(x)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table.getColumnModel().getColumn(i).setPrefferedSize(x)
    , et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    column.setResizable(false)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table.getColumnModel().getColumn(i).setResizable(false)
    ce devrait être bon. Du coup, votre objet colonne ne sert plus à rien mais ça devrait fonctionner...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut
    Je ne sais pas si j'ai bien compris, voici ce que j'ai fais :
    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
    TableColumn column = null;
    for (int i = 0; i < 4; i++){
    Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    column = Table.getColumnModel().getColumn(i);
    if (i == 0){
    Table.getColumnModel().getColumn(i).setPreferredWidth(70);
    Table.getColumnModel().getColumn(i).setResizable(false);}
    if (i == 1){
    Table.getColumnModel().getColumn(i).setPreferredWidth(350);
    Table.getColumnModel().getColumn(i).setResizable(false);}
    if (i == 2){
    Table.getColumnModel().getColumn(i).setPreferredWidth(40);
    Table.getColumnModel().getColumn(i).setResizable(false);}
    if (i == 3){
    Table.getColumnModel().getColumn(i).setPreferredWidth(145);
    Table.getColumnModel().getColumn(i).setResizable(false);
    }
    Merci de bien vouloir jeter un coup d'oeil sur ce bout de code.

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut Oui c'est ça
    Vous pouvez encore modifier deux choses. Supprimez les deux lignes suivantes, elles ne servent plus à rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TableColumn column = null;
    column = Table.getColumnModel().getColumn(i);
    et déplacez la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    avant la boucle.
    Et dites moi si ça vous permet d'obtenir ce que vous cherchez, à savoir afficher votre JTable avec des largeurs de colonne imposées et en désactivant la possibilité de les redimensionner manuellement à l'aide de la souris.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. Problème pour dimensionner les colonnes d'un ListGrid
    Par lnplnp dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 27/12/2012, 12h05
  2. Réponses: 6
    Dernier message: 08/07/2011, 16h22
  3. [Swing]JTable- Dimensionner les colonnes
    Par loutfi dans le forum Composants
    Réponses: 12
    Dernier message: 01/07/2011, 08h50
  4. Toutes les colonnes d'une BDD
    Par mohamed dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/09/2004, 14h12
  5. Réponses: 1
    Dernier message: 29/08/2004, 19h45

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