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

ved*_*ran 5 java swing jtable jscrollpane

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

解:

table.setPreferredScrollableViewportSize(table.getPreferredSize());
Run Code Online (Sandbox Code Playgroud)

kle*_*tra 8

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

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

table.setPreferredScrollableViewportSize(NULL);

编辑

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

table.setPreferredScrollableViewportSize(table.getPreferredSize());
Run Code Online (Sandbox Code Playgroud)

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

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

xtable.setVisualRowCount(3); 
Run Code Online (Sandbox Code Playgroud)