根据高度更改JScrollPane滚动速度

时间:2014-12-11 16:07:28

标签: 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需要动态更改滚动速度。我不知道我会怎么做。

理想情况下,只要用户使用鼠标滚轮按钮,或者按下滚动条上的向上或向下滚动按钮之一,我就想滚动滚动窗格高度的一半。

1 个答案:

答案 0 :(得分:1)

根据我的经验,滚动滚动窗格的速度不会(也不应该)根据窗格的大小动态更改(例如,视图端口列表中有多少元素)什么的。)

那就是说,如果你需要,试试这个:

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() );