Java JScrollPane检测滚动到底部

时间:2012-09-30 16:59:29

标签: java scroll jpanel jscrollpane jlabel

我无法在互联网上找到与我的问题相关的任何内容。

我有一个JScrollPane,它添加了一个JPanel,JPanel填充了JLabel。

目前,用户滚动到JScrollPane的底部,然后单击“下一步”按钮。

我想要做的是检测用户何时在JScrollPane底部/附近,这样我就可以在没有用户输入的情况下触发'Next'行为。

这甚至可能吗?

先谢谢大家。

3 个答案:

答案 0 :(得分:3)

JScrollBar使用BoundedRangeModel,这将接受ChangeListener - 因此您可以监听滚动条的更改并做出相应的响应。

答案 1 :(得分:3)

您可以使用JScrollPane中垂直滚动条中注册的AdjustmentListener,并根据事件值采取措施。

这是example

答案 2 :(得分:0)

下面是一个示例,显示了当滚动窗格接近底部(高度的90%)时如何触发事件:

final JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.getViewport().addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent event) {
        JScrollBar scrollbar = scrollPane.getVerticalScrollBar();
        if (scrollbar.getValue() + scrollbar.getVisibleAmount() > scrollbar.getMaximum() * 0.9) {
            // trigger the 'Next' behaviour here
        }
    }
});

或者,也可以将侦听器添加到模型中:

final BoundedRangeModel model = scrollPane.getVerticalScrollBar().getModel();
model.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent event) {
        if (model.getValue() + model.getExtent() > model.getMaximum() * 0.9) {
            // trigger the 'Next' behaviour here
        }
    }
});