2012-03-22 9 views
5

Ho solo bisogno di una tabella per mostrare 3 righe che ottengono i primi 3 prodotti di vendita da DB. Il tavolo è pronto, ma c'è una grande porzione di tavolo praticamente vuota, tranne che per 3 file. Come posso impostare l'altezza di questo rotolo di carta in modo che corrisponda all'altezza di 3 righe?Come impostare JScrollPane per mostrare solo una quantità specifica di righe

SOLUZIONE:

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

risposta

8

È un capriccio di attuazione scorrevole della JTable: imposta una dimensione arbitraria prefScrollable fissa.

È NULL per fare lo ScrollPane a ripiegare ad usare PreferredSize della tabella:

table.setPreferredScrollableViewportSize (null);

Modifica

Outch, @vedran è corretto, che non è sempre lavorando in una tabella con nucleo layoutManagers nucleo (era una nice hack in another question :) scusate per la confusione. Copia il suo commento qui:

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

è una valida opzione, anche se tutti i soliti bewares sui formati di difficile codifica si applicano anche qui.

Un JTable ben educato implementerebbe un getPreferredScrollableViewportSize più ragionevole, calcolandolo in termini di contenuto. JXTable (che è il tavolo migliore educati, mi ha prevenuto :-), è possibile impostare il pref in termini di righe visibili, proprio come in un elenco:

xtable.setVisualRowCount(3); 
+0

+1, immagino hai avuto meglio su di me di nuovo :-), ma non lo imposterà su null, cancellerà l'intero 'JTable' dalla vista? –

+0

@GagandeepBali no. i nomi delle colonne saranno ancora visibili :) – vedran

+0

+1, per favore mia stupida domanda, c'è differenza tra 'XxxViewportSize (table.getPreferredSize)' e il tuo 'XxxViewportSize (null)' nel caso di righe non hanno la stessa altezza – mKorbel

Problemi correlati