How to set JScrollPane to show only a sepecific amount of rows

為{幸葍}努か 提交于 2019-12-01 02:55:59

问题


I only need a table to show 3 rows which get top 3 selling products from DB. The table is ready, but the there's a huge portion of table which is practically empty, except for 3 rows. How can I set height of this scrollpane to match the height of 3 rows?

SOLUTION:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

回答1:


It's a quirk of the JTable's Scrollable implementation: it sets an arbitrary fixed prefScrollable size.

You null it to make the scrollPane to fall back to using the table's preferredSize:

table.setPreferredScrollableViewportSize(null);

Edit

outch, @vedran is correct, that's not always working in a core table with core layoutManagers (it was a nice hack in another question :) sorry for the confusion. Copying his comment here:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

is a viable option, though all the usual bewares about hard-coding sizes apply here as well.

A well-behaved JTable would implement a more reasonable getPreferredScrollableViewportSize, f.i calculating it in terms of content. JXTable (which is the best-behaved table, biased me :-), you could set the pref in terms of visible rows, just as in a list:

xtable.setVisualRowCount(3); 


来源:https://stackoverflow.com/questions/9821425/how-to-set-jscrollpane-to-show-only-a-sepecific-amount-of-rows

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!