Buongiorno amici,
mi sto arrovellando per impostare l'allineamento delle colonne di una
JTable con 5 colonne di cui 4 visibili, mentre la prima ha la larghezza impostata a 0 per non essere visibile, perché contiene il puntatore al record corrispondente nella tabella del db.
Dopo aver caricato la tabella:
modTabella = CaricaTabella();
Tbl1.setModel(modTabella);
Chiamo il metodo
ImpostaAllineamentoTabella:
public void ImpostaAllineamentoTabella(javax.swing.JTable myTbl, int[] allineamenti) {
DefaultTableCellRenderer renderAlign = new DefaultTableCellRenderer();
TableColumn colonna;
for (int ii=0; ii < allineamenti.length; ii++) {
colonna = myTbl.getColumnModel().getColumn(ii);
renderAlign.setHorizontalAlignment(allineamenti[ii]);
colonna.setCellRenderer(renderAlign);
}
}
che chiamo da con:
final int[] TITLE_ALIG = {SwingConstants.LEFT, SwingConstants.LEFT, SwingConstants.CENTER, SwingConstants.CENTER, SwingConstants.LEFT};
ImpostaAllineamentoTabella(Tbl1, TITLE_ALIG);
dove
Tbl1 è la JTable con le colonne da allineare.
Io mi aspettavo che la 1° colonna visibile fosse allineata a sinistra, la 2° e la 3° fossero allineate al centro, mentre la 4° a sinistra.
Il risultato è che sono tutte allineate a sinistra.
Se invece cambio la costante dell'ultimo elemento del vettore TITLE_ALIG in SwingConstants.CENTER tutte le colonne risultano allineate al centro.
Allora ho provato con un vettore:
public void ImpostaAllineamentoTabella(javax.swing.JTable myTbl, int[] allineamenti) {
DefaultTableCellRenderer renderAlign = new DefaultTableCellRenderer();
TableColumn[] colonna = new TableColumn[allineamenti.length];
for (int ii=0; ii < allineamenti.length; ii++) {
colonna[ii] = myTbl.getColumnModel().getColumn(ii);
renderAlign.setHorizontalAlignment(allineamenti[ii]);
colonna[ii].setCellRenderer(renderAlign);
}
}
Ma si comporta esattamente allo stesso modo.
A questo punto non capisco se sia possibile e come, allineare ogni singola colonna con un diverso allineamento.
Qualcuno per cortesia sa darmi qualche dritta?