2012-03-22 14 views
5

Potrzebuję tylko tabeli, aby wyświetlić 3 wiersze, które otrzymują 3 najlepsze produkty od DB. Stół jest gotowy, ale jest ogromna część stołu, która jest praktycznie pusta, z wyjątkiem 3 rzędów. Jak ustawić wysokość tej okienka, aby dopasować ją do wysokości 3 wierszy?Jak ustawić JScrollPane, aby wyświetlał tylko określoną liczbę wierszy?

ROZWIĄZANIE:

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

Odpowiedz

8

Jest to dziwactwo przewijalnych realizacji JTable za: ustawia dowolny stały rozmiar prefScrollable.

Ty wartość null go do ScrollPane spadać z powrotem do korzystania preferredSize stołu:

table.setPreferredScrollableViewportSize (null);

Edit

outch, @vedran jest poprawna, to nie zawsze działa w tabeli bazowej z podstawowych layoutManagers (to był nice hack in another question :) Przepraszam za zamieszanie. Kopiowanie jego komentarza tutaj:

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

jest realną opcją, chociaż obowiązują tu wszystkie zwykłe beware dotyczące formatowania na twardo.

Dobrze zachowana JTable wprowadziłaby bardziej uzasadnioną metodę getPreferredScrollableViewportSize, f.i obliczającą ją pod względem zawartości. JXTable (który jest najlepiej zachowywały się stół, tendencyjne mnie :-), można ustawić pref pod względem widocznych wierszy, podobnie jak w liście:

xtable.setVisualRowCount(3); 
+0

+1, myślę, że masz to lepiej ode mnie ponownie :-), ale nie ustawi go na wartość null, czy wymazuje cały widok "JTable" z widoku? –

+0

@GagandeepBali no. nazwy kolumn nadal będą widoczne :) – vedran

+0

+1, proszę moje głupie pytanie, czy jest różnica między 'XxxViewportSize (table.getPreferredSize)' i twoja 'XxxViewportSize (null)' w przypadku wierszy nie mają tej samej wysokości – mKorbel

Powiązane problemy