2011-08-24 66 views
3

使用JScrollPane的滾動條箭頭滾動(或通過爲箭頭鍵設置鍵綁定)將視口移動一個增量,暫停並平滑滾動。我遇到的大多數滾動條都表現相同;有輕微的移動,暫停,然後更快的連續滾動。有什麼辦法可以避免暫停,這樣滾動從頭到尾都是平滑的?在JScrollPane中更流暢地滾動

回答

4

BasicScrollBarUI負責設置滾動的計時器。

private final static int scrollSpeedThrottle = 60; // delay in milli seconds 
... 
scrollListener = createScrollListener(); 
scrollTimer = new Timer(scrollSpeedThrottle, scrollListener); 
scrollTimer.setInitialDelay(300); // default InitialDelay? 

您可以看到重複率比初始延遲更快。

所以我想你需要創建一個自定義的滾動條UI並覆蓋該代碼。

6

關鍵事件的初始延遲和重複率由主機操作系統指定。用戶通常會調整主機(平臺相關)首選項控制面板中的默認值。類似地,平臺的BasicScrollBarUI的子類可以進一步調節節流,例如, com.apple.laf.AquaScrollBarUI v。javax.swing.plaf.metal.MetalScrollBarUI

由於這些設置可能根深蒂固或高度個性化,因此任意更改可能接收不到。

+3

+1對於推薦堅持用戶默認:-) – kleopatra

+0

我正在JScrollPane上使用2D遊戲,所以暫停會讓玩家的移動變得尷尬。我可以看到爲什麼你通常不想改變默認設置。 – bendicott