如何检测 Java Swing 滚动条何时位于或靠近滚动条的底部



我正在开发一个需要内置电子表格的程序。我正在为电子表格使用 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("AnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn");
    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);
  }
}

最新更新