2011-08-24 67 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