[Java] Largueur min des colonnes d'une Jtable

Résolu/Fermé
Signaler
Messages postés
75
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
8 juillet 2008
-
 yannou -
Bonjour,

Je suis en train de realiser un pianoRoll (pour ceux qui connaissent) à l'aide d'un Jtable en repartant des sources de sun au sujet de JavaSound: https://www.oracle.com/java/technologies/

Comme on peut le voir sur la capture suivante:
https://accounts.google.com/ServiceLogin?service=jotspot&passive=1209600&continue=https://sites.google.com/site/sites/system/errors/WebspaceNotFound?path%3D/skysdragooonadsss/Jtable.jpg&followup=https://sites.google.com/site/sites/system/errors/WebspaceNotFound?path%3D/skysdragooonadsss/Jtable.jpg


La largeur des colonnes est trop importante pour mon utilisation. Il me faudrai des cases remplie de couleur ou non, ce à travers plusieurs milliers de colonnes (50000 environ..) mais la largeur des colonnes est trop importante ici... (et je n'ai pas de scrollbar horizontale au passage non plus, si vous pouvez m'aider?)

J'ai déjà tester divers solution avec setWidth, setMaxWidth et autre.. mais sans succés pour les colonnes.

Code :

for (int i = 1; i < names.length; i++) { TableColumn col = tcm.getColumn(i); col.setWidth(1); col.setCellRenderer(renderer); }


Et pour la JscroolPane, sans succés non plu:

Code :

JScrollPane t = new JScrollPane(table); t.createHorizontalScrollBar(); add("Center", t);


Enfin, existe t-il une solution proche pour la hauteur des lignes (quand j'aurai supprimer les noms d'instruments?


Merci de prendre de votre temps pour moi

La source de ma classe en ligne à : http://rafb.net/p/RCmeaA66.html

4 réponses

TableColumn column = null;
for (int i = 0 ; i < 2 ; i++)
{
column = table.getColumnModel().getColumn(i);
switch (i)
{
case 0 :
column.setPreferredWidth(120);
break;
case 1 :
column.setPreferredWidth(50);
break;
}
}

ou table est ta table :).
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
75
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
8 juillet 2008
5
Merci
Salut,

J'ai le même problème que toi concernant la ScrollBar horizontale.
Le fait de modifier en drag and drop la largeur d'une colonne agit sur les autres.
J'ai cherché sur internet, trouvé pas mal de truc, mais impossible de modifier la largeur de cette putain de jTable afin d'activer le Scroll horizontal. L'outil TableColumn, je ne comprend pas son fonctionnement, à mon avis il est lié à la taille de la Jtable, son utilisation s'avère imprévisible...
Help...
Salut,

concernant la barre de défilement horizontale, il faut utiliser
maTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);


Pour la largeur des colonnes, tu peux utiliser quelque chose du genre :

maTable.setColumnModel(new DefaultTableColumnModel() {
            protected void fireColumnAdded(TableColumnModelEvent pEvent) {
                for (int index = pEvent.getFromIndex(); index <= pEvent
                        .getToIndex(); index++) {
                    getColumn(index).setPreferredWidth(30);
                }
                super.fireColumnAdded(pEvent);
            }
        });


Tu as alors une table avec toutes les colonnes a 30 . Tu peux aussi utiliser setMaxWidth() et setMinWidth().
Bonjour,

J'aurais juste voulu savoir a quoi correspondait le chiffre 30...ce sont des pixels, des cm..?

Je voudrais en fait fixer la taille des colonnes selon la taille du titre, ou selon un élément si sa taille est plus grande que le titre (l'élément est celui de plus grande taille par rapport à tous les autres).

J'arrive a connaitre les différentes tailles en récupérant le nombre de caractères, mais comment faire correpondre ette taille pour la largeur de ma colonne.

Par exemple, si mon plus grand chiffre est sur 10 caractères alors que le titre seulement sur 6 (number), comment faire correspondre cette taille dans le setPreferredWidth..?

D'avance merci.