2

我一直无法在 Internet 上找到与我的问题相关的任何内容。

我有一个 JScrollPane,它添加了一个 JPanel,并且 JPanel 填充了 JLabels。

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

我想要做的是检测用户何时位于/靠近 JScrollPane 的底部,这样我就可以在没有用户输入的情况下触发“下一步”行为。

这甚至可能吗?

提前谢谢大家。

4

3 回答 3

4

JScrollBar 使用 BoundedRangeModel,这将接受一个 ChangeListener——因此您可以监听滚动条的变化并做出相应的响应。

于 2012-09-30T17:05:32.317 回答
4

您可以使用在您的垂直滚动条中注册的AdjustmentListenerJScrollPane并根据事件值采取行动。

这是一个例子

于 2012-09-30T17:07:57.353 回答
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
        }
    }
});
于 2019-06-28T22:47:29.427 回答