Module java.desktop
Package javax.swing

Class JScrollBar

  • All Implemented Interfaces:
    Adjustable, ImageObserver, MenuContainer, Serializable, Accessible
    Direct Known Subclasses:
    JScrollPane.ScrollBar


    @JavaBean(defaultProperty="UI",
              description="A component that helps determine the visible content range of an area.")
    public class JScrollBar
    extends JComponent
    implements Adjustable, Accessible
    An implementation of a scrollbar. The user positions the knob in the scrollbar to determine the contents of the viewing area. The program typically adjusts the display so that the end of the scrollbar represents the end of the displayable contents, or 100% of the contents. The start of the scrollbar is the beginning of the displayable contents, or 0%. The position of the knob within those bounds then translates to the corresponding percentage of the displayable contents.

    Typically, as the position of the knob in the scrollbar changes a corresponding change is made to the position of the JViewport on the underlying view, changing the contents of the JViewport.

    Warning: Swing is not thread safe. For more information see Swing's Threading Policy.

    Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans™ has been added to the java.beans package. Please see XMLEncoder.

    Since:
    1.2
    See Also:
    JScrollPane, Serialized Form
    • Constructor Detail

      • JScrollBar

        public JScrollBar​(int orientation,
                          int value,
                          int extent,
                          int min,
                          int max)
        Creates a scrollbar with the specified orientation, value, extent, minimum, and maximum. The "extent" is the size of the viewable area. It is also known as the "visible amount".

        Note: Use setBlockIncrement to set the block increment to a size slightly smaller than the view's extent. That way, when the user jumps the knob to an adjacent position, one or two lines of the original contents remain in view.

        Parameters:
        orientation - an orientation of the JScrollBar
        value - an int giving the current value
        extent - an int giving the amount by which the value can "jump"
        min - an int giving the minimum value
        max - an int giving the maximum value
        Throws:
        IllegalArgumentException - if orientation is not one of VERTICAL, HORIZONTAL
        See Also:
        setOrientation(int), setValue(int), setVisibleAmount(int), setMinimum(int), setMaximum(int)
      • JScrollBar

        public JScrollBar​(int orientation)
        Creates a scrollbar with the specified orientation and the following initial values:
         minimum = 0
         maximum = 100
         value = 0
         extent = 10
         
        Parameters:
        orientation - an orientation of the JScrollBar
      • JScrollBar

        public JScrollBar​()
        Creates a vertical scrollbar with the following initial values:
         minimum = 0
         maximum = 100
         value = 0
         extent = 10
         
    • Method Detail

      • setModel

        @BeanProperty(expert=true,
                      description="The scrollbar\'s BoundedRangeModel.")
        public void setModel​(BoundedRangeModel newModel)
        Sets the model that handles the scrollbar's four fundamental properties: minimum, maximum, value, extent.
        Parameters:
        newModel - a new model
        See Also:
        getModel()
      • getUnitIncrement

        public int getUnitIncrement​(int direction)
        Returns the amount to change the scrollbar's value by, given a unit up/down request. A ScrollBarUI implementation typically calls this method when the user clicks on a scrollbar up/down arrow and uses the result to update the scrollbar's value. Subclasses my override this method to compute a value, e.g. the change required to scroll up or down one (variable height) line text or one row in a table.

        The JScrollPane component creates scrollbars (by default) that override this method and delegate to the viewports Scrollable view, if it has one. The Scrollable interface provides a more specialized version of this method.

        Some look and feels implement custom scrolling behavior and ignore this property.

        Parameters:
        direction - is -1 or 1 for up/down respectively
        Returns:
        the value of the unitIncrement property
        See Also:
        setUnitIncrement(int), setValue(int), Scrollable.getScrollableUnitIncrement(java.awt.Rectangle, int, int)
      • setUnitIncrement

        @BeanProperty(preferred=true,
                      description="The scrollbar\'s unit increment.")
        public void setUnitIncrement​(int unitIncrement)
        Sets the unitIncrement property.

        Note, that if the argument is equal to the value of Integer.MIN_VALUE, the most look and feels will not provide the scrolling to the right/down.

        Some look and feels implement custom scrolling behavior and ignore this property.

        Specified by:
        setUnitIncrement in interface Adjustable
        Parameters:
        unitIncrement - the unit increment
        See Also:
        getUnitIncrement(int)
      • getBlockIncrement

        public int getBlockIncrement​(int direction)
        Returns the amount to change the scrollbar's value by, given a block (usually "page") up/down request. A ScrollBarUI implementation typically calls this method when the user clicks above or below the scrollbar "knob" to change the value up or down by large amount. Subclasses my override this method to compute a value, e.g. the change required to scroll up or down one paragraph in a text document.

        The JScrollPane component creates scrollbars (by default) that override this method and delegate to the viewports Scrollable view, if it has one. The Scrollable interface provides a more specialized version of this method.

        Some look and feels implement custom scrolling behavior and ignore this property.

        Parameters:
        direction - is -1 or 1 for up/down respectively
        Returns:
        the value of the blockIncrement property
        See Also:
        setBlockIncrement(int), setValue(int), Scrollable.getScrollableBlockIncrement(java.awt.Rectangle, int, int)
      • setBlockIncrement

        @BeanProperty(preferred=true,
                      description="The scrollbar\'s block increment.")
        public void setBlockIncrement​(int blockIncrement)
        Sets the blockIncrement property.

        Note, that if the argument is equal to the value of Integer.MIN_VALUE, the most look and feels will not provide the scrolling to the right/down.

        Some look and feels implement custom scrolling behavior and ignore this property.

        Specified by:
        setBlockIncrement in interface Adjustable
        Parameters:
        blockIncrement - the block increment
        See Also:
        getBlockIncrement()
      • getValue

        public int getValue​()
        Returns the scrollbar's value.
        Specified by:
        getValue in interface Adjustable
        Returns:
        the model's value property
        See Also:
        setValue(int)
      • getVisibleAmount

        public int getVisibleAmount​()
        Returns the scrollbar's extent, aka its "visibleAmount". In many scrollbar look and feel implementations the size of the scrollbar "knob" or "thumb" is proportional to the extent.
        Specified by:
        getVisibleAmount in interface Adjustable
        Returns:
        the value of the model's extent property
        See Also:
        setVisibleAmount(int)
      • getMinimum

        public int getMinimum​()
        Returns the minimum value supported by the scrollbar (usually zero).
        Specified by:
        getMinimum in interface Adjustable
        Returns:
        the value of the model's minimum property
        See Also:
        setMinimum(int)
      • getMaximum

        public int getMaximum​()
        The maximum value of the scrollbar is maximum - extent.
        Specified by:
        getMaximum in interface Adjustable
        Returns:
        the value of the model's maximum property
        See Also:
        setMaximum(int)
      • getValueIsAdjusting

        public boolean getValueIsAdjusting​()
        True if the scrollbar knob is being dragged.
        Returns:
        the value of the model's valueIsAdjusting property
        See Also:
        setValueIsAdjusting(boolean)
      • setValueIsAdjusting

        @BeanProperty(bound=false,
                      expert=true,
                      description="True if the scrollbar thumb is being dragged.")
        public void setValueIsAdjusting​(boolean b)
        Sets the model's valueIsAdjusting property. Scrollbar look and feel implementations should set this property to true when a knob drag begins, and to false when the drag ends. The scrollbar model will not generate ChangeEvents while valueIsAdjusting is true.
        Parameters:
        b - true if the upcoming changes to the value property are part of a series
        See Also:
        getValueIsAdjusting(), BoundedRangeModel.setValueIsAdjusting(boolean)
      • addAdjustmentListener

        public void addAdjustmentListener​(AdjustmentListener l)
        Adds an AdjustmentListener. Adjustment listeners are notified each time the scrollbar's model changes. Adjustment events are provided for backwards compatibility with java.awt.Scrollbar.

        Note that the AdjustmentEvents type property will always have a placeholder value of AdjustmentEvent.TRACK because all changes to a BoundedRangeModels value are considered equivalent. To change the value of a BoundedRangeModel one just sets its value property, i.e. model.setValue(123). No information about the origin of the change, e.g. it's a block decrement, is provided. We don't try fabricate the origin of the change here.

        Specified by:
        addAdjustmentListener in interface Adjustable
        Parameters:
        l - the AdjustmentLister to add
        See Also:
        removeAdjustmentListener(java.awt.event.AdjustmentListener), BoundedRangeModel.addChangeListener(javax.swing.event.ChangeListener)
      • getAdjustmentListeners

        @BeanProperty(bound=false)
        public AdjustmentListener[] getAdjustmentListeners​()
        Returns an array of all the AdjustmentListeners added to this JScrollBar with addAdjustmentListener().
        Returns:
        all of the AdjustmentListeners added or an empty array if no listeners have been added
        Since:
        1.4
      • fireAdjustmentValueChanged

        protected void fireAdjustmentValueChanged​(int id,
                                                  int type,
                                                  int value)
        Notify listeners that the scrollbar's model has changed.
        Parameters:
        id - an integer indicating the type of event.
        type - an integer indicating the adjustment type.
        value - the current value of the adjustment
        See Also:
        addAdjustmentListener(java.awt.event.AdjustmentListener), EventListenerList
      • setEnabled

        public void setEnabled​(boolean x)
        Enables the component so that the knob position can be changed. When the disabled, the knob position cannot be changed.
        Overrides:
        setEnabled in class JComponent
        Parameters:
        x - a boolean value, where true enables the component and false disables it
        See Also:
        Component.isEnabled(), Component.isLightweight()
      • paramString

        protected String paramString​()
        Returns a string representation of this JScrollBar. This method is intended to be used only for debugging purposes, and the content and format of the returned string may vary between implementations. The returned string may be empty but may not be null.
        Overrides:
        paramString in class JComponent
        Returns:
        a string representation of this JScrollBar.
      • getAccessibleContext

        @BeanProperty(bound=false)
        public AccessibleContext getAccessibleContext​()
        Gets the AccessibleContext associated with this JScrollBar. For JScrollBar, the AccessibleContext takes the form of an AccessibleJScrollBar. A new AccessibleJScrollBar instance is created if necessary.
        Specified by:
        getAccessibleContext in interface Accessible
        Overrides:
        getAccessibleContext in class Component
        Returns:
        an AccessibleJScrollBar that serves as the AccessibleContext of this JScrollBar