Oui, j'utilise pack() et ne je fait jamais de preferentSize(), c'est tout automatisé avec pack()
Oui, j'utilise pack() et ne je fait jamais de preferentSize(), c'est tout automatisé avec pack()
Attention AUTO_RESIZE_ALL_COLUMNS ne permet pas aux colonnes d'ajuster leur taille à leur contenu : il s'agit d'un mode de redimensionnement automatique lorsque la taille de la JTable change (ici toutes les colonnes s'agrandissent ou se rapetissent proportionnellement). On peut trouver des composants qui font ça (TableColumnAjuster).
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.
J'ai trouvé :
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 spreadsheet.setAutoResizeMode( JTable.AUTO_RESIZE_OFF ); for (int column = 0; column < spreadsheet.getColumnCount(); column++) { TableColumn tableColumn = spreadsheet.getColumnModel().getColumn(column); int preferredWidth = tableColumn.getMinWidth(); int maxWidth = tableColumn.getMaxWidth(); for (int row = 0; row < spreadsheet.getRowCount(); row++) { TableCellRenderer cellRenderer = spreadsheet.getCellRenderer(row, column); Component c = spreadsheet.prepareRenderer(cellRenderer, row, column); int width = c.getPreferredSize().width + spreadsheet.getIntercellSpacing().width; preferredWidth = Math.max(preferredWidth, width); // We've exceeded the maximum width, no need to check other rows if (preferredWidth >= maxWidth) { preferredWidth = maxWidth; break; } } tableColumn.setPreferredWidth( preferredWidth );
Oui, tu pouvais aussi le faire toi-même.
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.
Euh je viens de voir un petit truc, quand je refais un ajouter fichier il me génère les onglets à la suite au lieu de tout renouveler puis ré-créer :
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 private void btnLoad_click() { FileChooser fc = new FileChooser(); Component tabHDMT = IhmConverter.getHDMT(); File selectedFile; try { tabHDMT.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); boolean filled = false; int i = 0; do { // DBS message after the first selection if (i > 0) { JOptionPane .showConfirmDialog(null, Final.getMsgDBS(), Final.getMsgDBSTitle(), JOptionPane.WARNING_MESSAGE); } // choose a file selectedFile = fc.fileChooser(); if (selectedFile != null) { // create the tabs filled = utiMethods.populateJTabbedPane(selectedFile); } i++; } while (selectedFile != null && !filled); } finally { // when is wait off tabHDMT.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); } }
Il y a avait un removeAll() à un moment, que tu as du virer par inadvertance, ou déplacer.
devrait suffire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Component tabHDMT = IhmConverter.getHDMT(); tabHDMT.removeAll()
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.
Vu que j'ai déjà le titre pour la ligne "dbs" j'aimerai ne pas le reprendre, car comme je l'ai là, il met le titre suivie de la même ligne suivit de la suite donc mes 2 premières lignes sont le même et je voudrais éviter cela.
Est-ce que je dois faire comme avec le hideColumn ? ou je peux faire un +1 à un moment donné ?
Dans sheetToJtable, il suffit d'ajouter un continue, qui va aller directement à la fin du bloc de l'itération, ainsi le if (index >= 0) ne sera exécuté qu'à partir l'itération suivante. Ce n'est pas terrible pour la compréhension du fonctionnement de la boucle, mais c'est encore le plus simple car il n'y a qu'une ligne à ajouter et rien changer d'autre (sinon, il faudrait un booléen, ou jouer sur la valeur de index, ou changer la structure des if comme dans la solution suivante).
Du coup, comme la ligne index==0 n'a pas besoin d'être traitée dans l'itération où elle est détectée, on peut aussi faire (c'est plus propre, plus de continue) :
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// recovery of adequate lines final Object[][] recorvery = new Object[nbRows][nbColumns]; int index = -1; // indicates the index of the next line to recover, except of -1 int hideColumn = 0; //memorize the DBS column for hide it for (int i = 0; i < nbRows; i++) { if (index < 0) { // we found nothing, so we are searching for (int j = 0; j < nbColumns; j++) { if ("dbs".equals(obj[i][j])) { // we found a line that contains "dbs" index = 0; hideColumn = j; break; // needn't to search in this line } } if (index == 0) { // the first line including "dbs" : the headers // Recovering the headers header = new String[nbColumns-1]; for (int j = 0, col=0; j < nbColumns; j++) { if ( j!=hideColumn ) { header[col++] = String.valueOf(obj[i][j]); } } continue; // do not repeat title in data } } if (index >= 0) { // we found a line that contained "dbs", then copy // copy the lines after the first that contains "dbs" including this one for (int j = 0; j < nbColumns; j++) { // copy the full line recorvery[index][j] = obj[i][j]; } index++; // we advance in the recovery table } }
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 // recovery of adequate lines final Object[][] recorvery = new Object[nbRows][nbColumns]; int index = -1; // indicates the index of the next line to recover, except of -1 int hideColumn = 0; //memorize the DBS column for hide it for (int i = 0; i < nbRows; i++) { if (index < 0) { // we found nothing, so we are searching for (int j = 0; j < nbColumns; j++) { if ("dbs".equals(obj[i][j])) { // we found a line that contains "dbs" index = 0; hideColumn = j; break; // needn't to search in this line } } if (index == 0) { // the first line including "dbs" : the headers // Recovering the headers header = new String[nbColumns-1]; for (int j = 0, col=0; j < nbColumns; j++) { if ( j!=hideColumn ) { header[col++] = String.valueOf(obj[i][j]); } } } } else { // we found a line that contained "dbs", then copy // copy the lines after the first that contains "dbs" including this one for (int j = 0; j < nbColumns; j++) { // copy the full line recorvery[index][j] = obj[i][j]; } index++; // we advance in the recovery table } }
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.
Ok merci
J'ai trouvé mieux côté taille des colonnes avec ce code :
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 // spreadsheet column adjust int col = 0, larg = 0, row = 0, tableX = 0, width = 0; JTableHeader header = spreadsheet.getTableHeader(); Enumeration<TableColumn> columns = spreadsheet.getColumnModel() .getColumns(); spreadsheet.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); while (columns.hasMoreElements()) { // maximum length of the text or title of a column TableColumn column = (TableColumn) columns.nextElement(); col = header.getColumnModel().getColumnIndex( column.getIdentifier()); width = (int) spreadsheet .getTableHeader() .getDefaultRenderer() .getTableCellRendererComponent(spreadsheet, column.getIdentifier(), false, false, -1, col).getPreferredSize().getWidth(); for (row = 0; row < spreadsheet.getRowCount(); row++) { int preferedWidth = (int) spreadsheet .getCellRenderer(row, col) .getTableCellRendererComponent(spreadsheet, spreadsheet.getValueAt(row, col), false, false, row, col) .getPreferredSize().getWidth(); width = Math.max(width, preferedWidth); } header.setResizingColumn(column); larg = width + spreadsheet.getIntercellSpacing().width; larg = larg + 20; column.setWidth(larg); }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager