2011-11-01 101 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位置。