java - 根据高度更改 JScrollPane 滚动速度

标签 java swing jscrollpane

我想根据 JScrollPane 的高度更改其滚动速度。

这就是我当前创建 JScrollPane 的方式:

JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.getVerticalScrollBar().setUnitIncrement(scrollSpeed);

问题在于setUnitIncrement需要动态改变滚动速度。我不知道如何去做。

理想情况下,每当用户使用鼠标滚轮按钮或按下滚动条上的向上或向下滚动按钮之一时,我希望滚动滚动 Pane 高度的一半。

最佳答案

根据我的经验,滚动 Pane 的速度不会(也不应该)根据 Pane 的大小(例如, View 端口的列表中有多少元素等)动态变化。

也就是说,如果您需要,请尝试以下操作:

int getNewScrollSpeed( int scrollPaneHeight ){

    // you'll have to play around with the multiplier value to make it work for you
    // here I just chose 0.5 as an example

    return (int) ( scrollPaneHeight * 0.5 );

}

然后,只要 scrollPane 或窗口(等)的高度发生变化,就这样调用此例程。

    /* scrollPane height changes occur here */

    scrollPane.getVerticalScrollBar().setUnitIncrement( 
        getNewScrollSpeed ( scrollPane.getHeight() );

关于java - 根据高度更改 JScrollPane 滚动速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27427302/

相关文章:

java - 通用表模型

java - 在 Swing 中更改 JScrollPane 高度

java - 为什么我的 JTable 没有显示?

java - JPanel&JScrollPane及错误渲染

java - 从字符串 [] 的所有元素中删除引号

java - OData4J 和 AppEngine

java - 将文本字段添加到程序中

java - JScrollpane 不滚动大内容

java - 从 Com 端口 java 读取

java - arraylist 检查元素是否存在,忽略大小写