Non credo che la cosa sia così semplice. JTable ha, sostanzialmente, due comportamenti: auto-resize (ridimensiona tutte le colonne, mantenendo le proporzioni) oppure no-auto-resize (JTable non ridimensiona nulla). Non entro nel merito della possibilità di ridimensionamento manuale dell'utente.
Quello che chiedi di fare tu è un misto tra i due: non fare il resize per tutte le colonne tranne l'ultima, che deve estendersi.
Questo comportamento dovrai definirlo tu a mano, andando ad aggiungere un listener al contenitore della JTable (immagino uno JScrollPane) in modo che venga notificato quando la finestra viene ridimensionata. Così, di primo acchitto, aggiungerei un ComponentListener che intercetta l'evento componentResized e modifica la dimensione dell'ultima colonna di conseguenza. Proverei con qualcosa del genere (non l'ho provato, l'ho scritto di getto nel forum):
codice:
class JTableResizer extends ComponentAdapter {
private int initialWidth = 0;
private JTable refTable;
public JTableResizer(JTable refTable, int initialWidth) {
this.refTable = refTable;
this.initialWidth = initialWidth;
}
@Override
public void componentResized(ComponentEvent ce) {
Component src = ce.getSource();
int deltaWidth = src.getSize().width - initialWidth;
int actualWidth = refTable.getColumn( ultima colonna ).getWidth();
actualWidth += deltaWidth;
refTable.getColumn( ultima colonna ).setWidth( actualWidth );
}
}
...
// Nel punto in cui crei la JTable e il JScrollPane:
JTable tuaTabella = new JTable( ... );
JScrollPane jsp = new JScrollPane( tuaTabella );
...
add( jsp );
...
jsp.addComponentListener( new JTableResizer(tuaTabella, jsp.getSize().width) );
Qualcosa del genere, insomma. Devi riuscire ad ottenere la dimensione iniziale del contenitore (quella in cui la tua ultima colonna coincide perfettamente con la dimensione della tabella) in modo da passarla al resizer (che deve sapere qual è il punto di partenza da cui decidere se aumentare o diminuire la dimensione dell'ultima colonna).
Ciao.