2011-11-01 99 views
1

我有一张桌子,我可以在桌子上显示的数据中添加一些过滤器,我希望能够在屏幕上的相同位置上保留特定的行,以便选择行我选择了最上面的一行,因为它的唯一行我知道是否有如果有任何数据(可能是唯一的行),当过滤器更改我需要滚动到该行(或附近它),我可以找到我想更改数据后要去的项目的行号。在同一位置上保持行

目前即时通讯使用jTable.scrollRectToVisible(new Rectangle(jTable.getCellRect(rowId, 0, true)));但这只是确保它的视野。并且由于在大多数情况下,数据的更改使我的视图进入顶部,所以将行滚动到视图的底部。 我如何最好地将行放到我的视图顶部?如果行在我的数据的末尾,它应该滚动到底部,而不是强制滚动框中的空白区域到顶部。

+0

(jTable.getBounds()。height/numRows)* position应该为您提供您感兴趣的记录的大致位置,然后您可以滚动到该记录。 – RHT

+0

这里有一个更好的算法 - http://www.exampledepot.com/egs/javax.swing.table/Vis.html – RHT

+0

@RHT我也一直在使用该算法,但我没有看到它是如何比更好简单的'jTable.scrollRectToVisible(new Rectangle(jTable.getCellRect(rowId,0,true)));' – Blem

回答

2
scrollPane.getViewport().setViewPosition(Point); 

该点将是getCellRect(...)方法返回的x/y位置。