[英]How to detect when a Java Swing scroll bar is at or near the bottom of the bar?
我正在开发一个程序,该程序需要内置某种电子表格。 我正在为电子表格使用JTable,并将其包含在可滚动的窗口中,但是电子表格通常是无限的,而我能想到的唯一方法是使其在用户滚动到电子表格的底部(或靠近底部),它会添加20个新行。 我将如何去做呢?
您可以通过向滚动条添加AdjustmentListener
来实现。 查看下面的演示。
import javax.swing.*;
import java.awt.event.*;
public class ScrollPaneEvents
{
private static final float THRESHOLD = 0.9f;
public static void main(String[] args)
{
JTextArea textArea = new JTextArea("A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nL\nM\nN\nO\nP\nQ\nR\nS\nT\nU\nV\nW\nX\nY\nZ\n");
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener()
{
@Override
public void adjustmentValueChanged(AdjustmentEvent e)
{
int maxValue = scrollPane.getVerticalScrollBar().getMaximum() - scrollPane.getVerticalScrollBar().getVisibleAmount();
int currentValue = scrollPane.getVerticalScrollBar().getValue();
float fraction = (float) currentValue / (float) maxValue;
if (fraction > THRESHOLD)
{
System.out.println("Scroll bar is near the bottom");
}
}
});
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(scrollPane);
frame.setBounds(300, 200, 400, 300);
frame.setVisible(true);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.