我无法在互联网上找到与我的问题相关的任何内容。
我有一个JScrollPane,它添加了一个JPanel,JPanel填充了JLabel。
目前,用户滚动到JScrollPane的底部,然后单击“下一步”按钮。
我想要做的是检测用户何时在JScrollPane底部/附近,这样我就可以在没有用户输入的情况下触发'Next'行为。
这甚至可能吗?
先谢谢大家。
答案 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
}
}
});