2012-03-22 45 views
5

我只需要一张表来显示3行,其中获得来自数据库的前3名销售产品。桌子已经准备好了,但桌子的一大部分几乎是空的,除了3排。我如何设置此滚动窗格的高度以匹配3行的高度?如何将JScrollPane设置为仅显示特定数量的行

SOLUTION:

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

回答

8

这是JTable中的滚动实施的怪癖:它设置任意固定prefScrollable大小。

你空它,使滚动窗格回落到使用表的首选大小:

table.setPreferredScrollableViewportSize(NULL);

编辑

outch,@vedran是正确的,这并不总是与核心布局管理核心工作表(这是一个nice hack in another question :)遗憾的混乱。这里复制他的评论:

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

是一个可行的选择,但所有关于硬编码的大小通常的警示[适用于这里。

一个乖巧的JTable将实施更合理的getPreferredScrollableViewportSize,f.i在内容方面计算它。 JXTable(这是最好的乖表,偏我:-),你可以设置在PREF可见行而言,就如同在一个列表:

xtable.setVisualRowCount(3); 
+0

+1,我猜你得到它更好的我再次:-),但不会将其设置为空,将从视图中消灭整个'JTable'? – 2012-03-22 11:49:34

+0

@GagandeepBali no。列名仍然可见:) – vedran 2012-03-22 12:07:26

+0

+1,请问我的愚蠢问题,在行没有相同高度的情况下,'XxxViewportSize(table.getPreferredSize)'和你的'XxxViewportSize(null)'有区别吗? – mKorbel 2012-03-22 12:07:47

相关问题