Alignement étrange et mise en page dans TableViewer avec l'image
-
28-10-2019 - |
Question
J'utilise un TableViewer
avec deux colonnes. Le premier doit contenir du texte et le second une image en fonction de l'état de l'objet. Le fournisseur d'étiquettes est un fournisseur de douane qui s'étend LabelProvider
et les outils ITableLayoutProvider
.
Lorsqu'aucune image n'est affichée, la disposition est correcte et le texte de la première colonne est aligné à gauche.
Mais quand au moins une image s'affiche, le texte dans la première colonne est aligné quelque part entre droit et centre - semble un peu laid.
La disposition est assez simple:
availableDevicesList = new TableViewer(this, SWT.SINGLE | SWT.BORDER
| SWT.FULL_SELECTION);
availableDevicesList.setContentProvider(new ArrayContentProvider());
Table table = availableDevicesList.getTable();
TableLayout tableLayout = new TableLayout();
table.setLayout(tableLayout);
table.setLinesVisible(true);
tableLayout.addColumnData(new ColumnWeightData(3));
new TableColumn(table, SWT.LEFT);
tableLayout.addColumnData(new ColumnWeightData(1));
new TableColumn(table, SWT.RIGHT);
Qu'est-ce qui cause ce problème?
La solution
C'est un bug dans l'API Windows Voir le rapport SWT Bug. Il n'affecte que la première colonne du tableau, donc la solution de contournement officielle consiste à "sauter" la première colonne et à la définir sur une taille zéro (voir le dernier commentaire sur le rapport de bogue), mais sur la colonne de table Mac OS X ne peut pas avoir de taille zéro, donc il y aura de la visible Première colonne avec la taille 1 ou quelque chose comme ça.
Ouais, déteste aussi ce bug dans API Win.