Listening for Scrollbar Value Changes in a JScrollPane Container : JScrollPane « Swing « Java Tutorial






import java.awt.Adjustable;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;

import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Main {
  public static void main(String[] argv) throws Exception {
    JTextArea textArea = new JTextArea();
    JScrollPane pane = new JScrollPane(textArea);

    // Listen for value changes in the scroll pane's scrollbars
    AdjustmentListener listener = new MyAdjustmentListener();
    pane.getHorizontalScrollBar().addAdjustmentListener(listener);
    pane.getVerticalScrollBar().addAdjustmentListener(listener);
  }
}

class MyAdjustmentListener implements AdjustmentListener {
  public void adjustmentValueChanged(AdjustmentEvent evt) {
    Adjustable source = evt.getAdjustable();
    if (evt.getValueIsAdjusting()) {
      return;
    }
    int orient = source.getOrientation();
    if (orient == Adjustable.HORIZONTAL) {
      System.out.println("from horizontal scrollbar"); 
    } else {
      System.out.println("from vertical scrollbar");
    }
    int type = evt.getAdjustmentType();
    switch (type) {
    case AdjustmentEvent.UNIT_INCREMENT:
      System.out.println("Scrollbar was increased by one unit");
      break;
    case AdjustmentEvent.UNIT_DECREMENT:
      System.out.println("Scrollbar was decreased by one unit");
      break;
    case AdjustmentEvent.BLOCK_INCREMENT:
      System.out.println("Scrollbar was increased by one block");
      break;
    case AdjustmentEvent.BLOCK_DECREMENT:
      System.out.println("Scrollbar was decreased by one block");
      break;
    case AdjustmentEvent.TRACK:
      System.out.println("The knob on the scrollbar was dragged");
      break;
    }
    int value = evt.getValue();
  }
}








14.46.JScrollPane
14.46.1.Working with JScrollPane Headers and Corners
14.46.2.Add component to JScrollPaneAdd component to JScrollPane
14.46.3.Create a scrollable list
14.46.4.A corner component is displayed only if the two components at a right angle from the corner are currently shown.A corner component is displayed only if the two components at a right angle from the corner are currently shown.
14.46.5.Set Row Header ViewSet Row Header View
14.46.6.Adding component to JScrollPane using its constructorAdding component to JScrollPane using its constructor
14.46.7.JScrollPane: display a large component within a smaller display areaJScrollPane: display a large component within a smaller display area
14.46.8.Set Continuous Layout
14.46.9.Resetting the Viewport Position: move JScrollPane to the topResetting the Viewport Position: move JScrollPane to the top
14.46.10.Customizing a JScrollPane Look and Feel
14.46.11.Get the default scrollbar policy
14.46.12.Listening for Scrollbar Value Changes in a JScrollPane Container
14.46.13.Make the scrollbars always appear
14.46.14.Make the scrollbars never appear
14.46.15.JScrollPane Scrollbar Policies