nat*_*han 5 java swing jscrollpane jscrollbar
我想知道是否有办法知道什么时候JScrollBar(在我的情况下是垂直的)到达了他的包含的底部JScrollPane.
起初我虽然AdjustmentListener在滚动条上使用了一个但我不知道如何解释该value属性JScrollBar.此外,我不确定正确理解maximum代表什么,如果我可以使用该值来获取我需要的信息.
编辑:
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent ae) {
System.out.println("Value: " + scrollPane.getVerticalScrollBar().getValue() + " Max: " + scrollPane.getVerticalScrollBar().getMaximum());
}
}
Run Code Online (Sandbox Code Playgroud)
Jer*_*dam 10
您必须将滚动条的范围添加到计算中.我在下面的示例中将代码添加到您的代码中.
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent ae) {
int extent = scrollPane.getVerticalScrollBar().getModel().getExtent();
System.out.println("Value: " + (scrollPane.getVerticalScrollBar().getValue()+extent) + " Max: " + scrollPane.getVerticalScrollBar().getMaximum());
}
});
Run Code Online (Sandbox Code Playgroud)
两种替代实施(部分对Kleopatra作出反应)
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent event) {
JScrollBar scrollBar = (JScrollBar) event.getAdjustable();
int extent = scrollBar.getModel().getExtent();
System.out.println("1. Value: " + (scrollBar.getValue() + extent) + " Max: " + scrollBar.getMaximum());
}
});
Run Code Online (Sandbox Code Playgroud)
或者通过模型
scrollPane.getVerticalScrollBar().getModel().addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent event) {
BoundedRangeModel model = (BoundedRangeModel) event.getSource();
int extent = model.getExtent();
int maximum = model.getMaximum();
int value = model.getValue();
System.out.println("2. Value: " + (value + extent) + " Max: " + maximum);
}
});
Run Code Online (Sandbox Code Playgroud)