如何设置JScrollPane以仅显示特定数量的行

我只需要一张表来显示3行,这些行可以从DB中获得前3个销售产品。 表已经准备就绪,但是除了3行之外,表中有很大一部分几乎是空的。 如何设置此滚动窗格的高度以匹配3行的高度?

解:

table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

这是JTable的Scrollable实现的一个怪癖:它设置了一个任意固定的prefScrollable大小。

您将其null以使scrollPane回退到使用表的preferredSize:

table.setPreferredScrollableViewportSize(NULL);

编辑

outch,@ edran是正确的,这并不总是在核心layoutManagers的核心表中工作(这是另一个问题的一个很好的黑客 :)抱歉混乱。 在这里复制他的评论:

 table.setPreferredScrollableViewportSize(table.getPreferredSize()); 

是一个可行的选择,虽然所有关于硬编码大小的常见提示也适用于此。

一个表现良好的JTable将实现更合理的getPreferredScrollableViewportSize,并根据内容计算它。 JXTable(这是表现最好的表,偏向我:-),您可以根据可见行设置pref,就像在列表中一样:

 xtable.setVisualRowCount(3);