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

Agents de placement/Fenêtres Java Discussion :

[JTable] ajuster la taille d'une colonne à la taille du texte [FAQ]


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club Avatar de GETah
    Inscrit en
    Décembre 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 77
    Points : 67
    Points
    67
    Par défaut [JTable] ajuster la taille d'une colonne à la taille du texte
    Bonjour,
    Sauriez vous comment faire pour ajuster la taille d'une colonne d'une table JTable a la taille du texte qu'il y'a dedans ?
    Merci,

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 73
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.event.TableModelEvent;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.TableColumnModel;
    import javax.swing.table.TableModel;
     
    /**
     * Classe Ex1
     */
    public class Ex1 extends JFrame{
    	public static String titres[]={"col1","col2","col3","col4"};
    	public static String valeurs[][]={
    		{"valeur 1","valeur 2","valeur 3","valeur 4"},
    		{"valeur 5","valeur 6","valeur 7","valeur 8"},
    		{"valeur 9","valeur 10","valeur 11","valeur 12"},
    		{"valeur 13","valeur 14","valeur 15","valeur 16"}
    	};
     
    	public static class Modele extends AbstractTableModel {
     
    		/* (non-Javadoc)
    		 * @see javax.swing.table.TableModel#getColumnCount()
    		 */
    		public int getColumnCount() {
    			return titres.length;
    		}
     
    		/* (non-Javadoc)
    		 * @see javax.swing.table.TableModel#getRowCount()
    		 */
    		public int getRowCount() {
    			return valeurs.length;
    		}
     
    		/* (non-Javadoc)
    		 * @see javax.swing.table.TableModel#isCellEditable(int, int)
    		 */
    		public boolean isCellEditable(int rowIndex, int columnIndex) {
    			return true;
    		}
     
    		/* (non-Javadoc)
    		 * @see javax.swing.table.TableModel#getColumnClass(int)
    		 */
    		public Class getColumnClass(int columnIndex) {
    			return String.class;
    		}
     
    		/* (non-Javadoc)
    		 * @see javax.swing.table.TableModel#getValueAt(int, int)
    		 */
    		public Object getValueAt(int rowIndex, int columnIndex) {
    			return valeurs[rowIndex][columnIndex];
    		}
     
    		/* (non-Javadoc)
    		 * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
    		 */
    		public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    			valeurs[rowIndex][columnIndex]=aValue.toString();
    			fireTableDataChanged();	// Signal que les valeurs ont change
    		}
     
    		/* (non-Javadoc)
    		 * @see javax.swing.table.TableModel#getColumnName(int)
    		 */
    		public String getColumnName(int columnIndex) {
    			return titres[columnIndex];
    		}
     
    	}
     
    	public static class Table extends JTable{
     
    		public Table(){
    			super(new Modele());	// avec cette initialisation l'instance fait partie des listener de TableModelEvent
    			setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    			getTableHeader().setResizingAllowed(false); 
    		}
     
    		/* 
    		 * Declenché lors d'un changement de valeurs dans le modele 
    		 */
    		public void tableChanged(TableModelEvent e) {
    			super.tableChanged(e);
    			TableColumnModel modelecolonne=getColumnModel();
    			TableModel modele=getModel();
    			int total=modelecolonne.getColumnCount();
    			for(int i=0;i<total;i++){
    				int taille=0;
    				int total2=modele.getRowCount();
    				for(int j=0;j<total2;j++){
    					// Partie determinant la taille de la cellule de ligne j et de colonne i
    					int taille2=modele.getValueAt(j,i).toString().length()*7;	// determination arbitraire
    					if(taille2>taille){
    						taille=taille2;
    					}
    				}
    				modelecolonne.getColumn(i).setPreferredWidth(taille);
    			}
    		}
     
    	}
     
    	public Ex1(){
    		super("Ex");
     
    		getContentPane().add(new JScrollPane(new Table()));
     
    		setSize(320,200);
    		setVisible(true);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
     
    	public static void main(String args[]) {
    		new Ex1();
    	}
    }
    Attention dans cette solution assigne des tailles arbitraires aux cellules...
    Il faut les calculer en utilisant les fonctions graphique de type FontMetrics ou quelquechose dans le genre
    Je crois qu'il y a quelquechose dans les FAQ

    J'espere que c'etait ce dont tu avais besoin...

    Cordialement,

    PS: N'oublie pas le tag [resolu], quand ton probleme est resolu... Merci...
    PS : N'oublie pas le tag [Résolu] (en cliquant sur http://pouiller.eclipse.free.fr/avatar/resolu.gif), si ton problème est résolu...

  3. #3
    Membre du Club Avatar de GETah
    Inscrit en
    Décembre 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 77
    Points : 67
    Points
    67
    Par défaut
    Merci,
    ça marche!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 73
    Points : 78
    Points
    78
    Par défaut
    De rien,

    PS: N'oublie pas le tag [resolu], quand ton probleme est resolu... Merci...
    PS : N'oublie pas le tag [Résolu] (en cliquant sur http://pouiller.eclipse.free.fr/avatar/resolu.gif), si ton problème est résolu...

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/02/2010, 17h25
  2. Taille d'une image et taille d'une fenêtre
    Par Yachas dans le forum wxPython
    Réponses: 11
    Dernier message: 06/10/2009, 16h44
  3. Récupérer le type et la taille d'une colonne
    Par Progs dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 23/09/2005, 17h27
  4. [Oracle9i] Modification taille d'une colonne
    Par Jibees dans le forum Oracle
    Réponses: 14
    Dernier message: 05/08/2005, 11h25
  5. Réponses: 12
    Dernier message: 11/04/2005, 18h31

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