我一直无法在 Internet 上找到与我的问题相关的任何内容。
我有一个 JScrollPane,它添加了一个 JPanel,并且 JPanel 填充了 JLabels。
目前,用户滚动到 JScrollPane 的底部,然后单击“下一步”按钮。
我想要做的是检测用户何时位于/靠近 JScrollPane 的底部,这样我就可以在没有用户输入的情况下触发“下一步”行为。
这甚至可能吗?
提前谢谢大家。
我一直无法在 Internet 上找到与我的问题相关的任何内容。
我有一个 JScrollPane,它添加了一个 JPanel,并且 JPanel 填充了 JLabels。
目前,用户滚动到 JScrollPane 的底部,然后单击“下一步”按钮。
我想要做的是检测用户何时位于/靠近 JScrollPane 的底部,这样我就可以在没有用户输入的情况下触发“下一步”行为。
这甚至可能吗?
提前谢谢大家。
JScrollBar 使用 BoundedRangeModel,这将接受一个 ChangeListener——因此您可以监听滚动条的变化并做出相应的响应。
您可以使用在您的垂直滚动条中注册的AdjustmentListenerJScrollPane
并根据事件值采取行动。
这是一个例子。
下面是一个示例,展示了如何在滚动窗格接近底部(高度的 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
}
}
});