javax.swing
Class JScrollBar

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JScrollBar
All Implemented Interfaces:
Accessible, Adjustable, java.awt.image.ImageObserver, MenuContainer, Serializable
Direct Known Subclasses:
javax.swing.JScrollPane.ScrollBar

public class JScrollBar
extends JComponent
implements Adjustable, Accessible

Safe:

See Also:
Serialized Form

Field Summary
protected  int blockIncrement
           
private  ChangeListener fwdAdjustmentEvents
          All changes from the model are treated as though the user moved the scrollbar knob.
protected  BoundedRangeModel model
          The model that represents the scrollbar's minimum, maximum, extent (aka "visibleAmount") and current value.
protected  int orientation
           
private static String uiClassID
           
protected  int unitIncrement
           
 
Fields inherited from class javax.swing.JComponent
_bounds, accessibleContext, listenerList, paintingChild, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Container
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.Adjustable
HORIZONTAL, NO_ORIENTATION, VERTICAL
 
Constructor Summary
JScrollBar()
          Enabled: Creates a vertical scrollbar with the following initial values:
JScrollBar(int orientation)
          Enabled: Creates a scrollbar with the specified orientation and the following initial values:
JScrollBar(int orientation, int value, int extent, int min, int max)
          Enabled: Creates a scrollbar with the specified orientation, value, extent, minimum, and maximum.
 
Method Summary
 void addAdjustmentListener(AdjustmentListener l)
          Enabled: Adds an AdjustmentListener.
private  void checkOrientation(int orientation)
           
protected  void fireAdjustmentValueChanged(int id, int type, int value)
           
 AccessibleContext getAccessibleContext()
          Suppressed: Gets the AccessibleContext associated with this JScrollBar.
 AdjustmentListener[] getAdjustmentListeners()
          Suppressed: Returns an array of all the AdjustmentListeners added to this JScrollBar with addAdjustmentListener().
 int getBlockIncrement()
          Enabled: For backwards compatibility with java.awt.Scrollbar.
 int getBlockIncrement(int direction)
          Enabled: Returns the amount to change the scrollbar's value by, given a block (usually "page") up/down request.
 int getMaximum()
          Enabled: The maximum value of the scrollbar is maximum - extent.
 Dimension getMaximumSize()
          Enabled: The scrollbar is flexible along it's scrolling axis and rigid along the other axis.
 int getMinimum()
          Enabled: Returns the minimum value supported by the scrollbar (usually zero).
 Dimension getMinimumSize()
          Enabled: The scrollbar is flexible along it's scrolling axis and rigid along the other axis.
 BoundedRangeModel getModel()
          Enabled: Returns data model that handles the scrollbar's four fundamental properties: minimum, maximum, value, extent.
 int getOrientation()
          Enabled: Returns the component's orientation (horizontal or vertical).
 javax.swing.plaf.ScrollBarUI getUI()
          Suppressed: Returns the delegate that implements the look and feel for this component.
 String getUIClassID()
          Suppressed: Returns the name of the LookAndFeel class for this component.
 int getUnitIncrement()
          Enabled: For backwards compatibility with java.awt.Scrollbar.
 int getUnitIncrement(int direction)
          Enabled: Returns the amount to change the scrollbar's value by, given a unit up/down request.
 int getValue()
          Enabled: Returns the scrollbar's value.
 boolean getValueIsAdjusting()
          Enabled: True if the scrollbar knob is being dragged.
 int getVisibleAmount()
          Enabled: Returns the scrollbar's extent, aka its "visibleAmount".
protected  String paramString()
          Returns a string representation of this JScrollBar.
 void removeAdjustmentListener(AdjustmentListener l)
          Enabled: Removes an AdjustmentEvent listener.
 void setBlockIncrement(int blockIncrement)
          Enabled: Sets the blockIncrement property.
 void setEnabled(boolean x)
          Enabled: Enables the component so that the knob position can be changed.
 void setMaximum(int maximum)
          Enabled: Sets the model's maximum property.
 void setMinimum(int minimum)
          Enabled: Sets the model's minimum property.
 void setModel(BoundedRangeModel newModel)
          Enabled: Sets the model that handles the scrollbar's four fundamental properties: minimum, maximum, value, extent.
 void setOrientation(int orientation)
          Enabled: Set the scrollbar's orientation to either VERTICAL or HORIZONTAL.
 void setUI(javax.swing.plaf.ScrollBarUI ui)
          Suppressed: Sets the L&F object that renders this component.
 void setUnitIncrement(int unitIncrement)
          Enabled: Sets the unitIncrement property.
 void setValue(int value)
          Enabled: Sets the scrollbar's value.
 void setValueIsAdjusting(boolean b)
          Enabled: Sets the model's valueIsAdjusting property.
 void setValues(int newValue, int newExtent, int newMin, int newMax)
          Enabled: Sets the four BoundedRangeModel properties after forcing the arguments to obey the usual constraints:
 void setVisibleAmount(int extent)
          Enabled: Set the model's extent property.
 void updateUI()
          Suppressed: Overrides JComponent.updateUI.
private  void writeObject(ObjectOutputStream s)
          See readObject() and writeObject() in JComponent for more information about serialization in Swing.
 
Methods inherited from class javax.swing.JComponent
_paintImmediately, addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, alwaysOnTop, checkIfChildObscuredBySibling, componentInputMapChanged, computeVisibleRect, computeVisibleRect, compWriteObjectNotify, contains, createToolTip, disable, enable, enableSerialization, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getCreatedDoubleBuffer, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getManagingFocusBackwardTraversalKeys, getManagingFocusForwardTraversalKeys, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getWriteObjCounter, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyBindings, processKeyBindingsForAllComponents, processKeyEvent, processMouseMotionEvent, putClientProperty, rectangleIsObscured, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setCreatedDoubleBuffer, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPaintingChild, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, setWriteObjCounter, shouldDebugGraphics, superProcessMouseMotionEvent, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, get, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, iterate, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, size, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, toString, transferFocus, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

uiClassID

private static final String uiClassID
See Also:
getUIClassID(), JComponent.readObject(java.io.ObjectInputStream)

fwdAdjustmentEvents

private ChangeListener fwdAdjustmentEvents
All changes from the model are treated as though the user moved the scrollbar knob.


model

protected BoundedRangeModel model
The model that represents the scrollbar's minimum, maximum, extent (aka "visibleAmount") and current value.

See Also:
setModel(javax.swing.BoundedRangeModel)

orientation

protected int orientation
See Also:
setOrientation(int)

unitIncrement

protected int unitIncrement
See Also:
setUnitIncrement(int)

blockIncrement

protected int blockIncrement
See Also:
setBlockIncrement(int)
Constructor Detail

JScrollBar

public JScrollBar(int orientation,
                  int value,
                  int extent,
                  int min,
                  int max)
Enabled: 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.

See Also:
setOrientation(int), setValue(int), setVisibleAmount(int), setMinimum(int), setMaximum(int)

JScrollBar

public JScrollBar(int orientation)
Enabled: Creates a scrollbar with the specified orientation and the following initial values:
 minimum = 0 
 maximum = 100 
 value = 0
 extent = 10
 


JScrollBar

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

Method Detail

checkOrientation

private void checkOrientation(int orientation)

setUI

public void setUI(javax.swing.plaf.ScrollBarUI ui)
Suppressed: Sets the L&F object that renders this component.

Parameters:
ui - the ScrollBarUI L&F object
Since:
1.4
See Also:
UIDefaults.getUI(javax.swing.JComponent)

getUI

public javax.swing.plaf.ScrollBarUI getUI()
Suppressed: Returns the delegate that implements the look and feel for this component.

See Also:
JComponent.setUI(javax.swing.plaf.ComponentUI)

updateUI

public void updateUI()
Suppressed: Overrides JComponent.updateUI.

Overrides:
updateUI in class JComponent
See Also:
JComponent.updateUI()

getUIClassID

public String getUIClassID()
Suppressed: Returns the name of the LookAndFeel class for this component.

Overrides:
getUIClassID in class JComponent
Returns:
"ScrollBarUI"
See Also:
JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)

getOrientation

public int getOrientation()
Enabled: Returns the component's orientation (horizontal or vertical).

Specified by:
getOrientation in interface Adjustable
Returns:
VERTICAL or HORIZONTAL
See Also:
setOrientation(int), java.awt.Adjustable#getOrientation

setOrientation

public void setOrientation(int orientation)
Enabled: Set the scrollbar's orientation to either VERTICAL or HORIZONTAL.

See Also:
getOrientation()

getModel

public BoundedRangeModel getModel()
Enabled: Returns data model that handles the scrollbar's four fundamental properties: minimum, maximum, value, extent.

See Also:
setModel(javax.swing.BoundedRangeModel)

setModel

public void setModel(BoundedRangeModel newModel)
Enabled: Sets the model that handles the scrollbar's four fundamental properties: minimum, maximum, value, extent.

See Also:
getModel()

getUnitIncrement

public int getUnitIncrement(int direction)
Enabled: 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.

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

public void setUnitIncrement(int unitIncrement)
Enabled: Sets the unitIncrement property.

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

getBlockIncrement

public int getBlockIncrement(int direction)
Enabled: 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.

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

public void setBlockIncrement(int blockIncrement)
Enabled: Sets the blockIncrement property.

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

getUnitIncrement

public int getUnitIncrement()
Enabled: For backwards compatibility with java.awt.Scrollbar.

Specified by:
getUnitIncrement in interface Adjustable
Returns:
the unit value increment for the adjustable object
See Also:
Adjustable.getUnitIncrement(), getUnitIncrement(int)

getBlockIncrement

public int getBlockIncrement()
Enabled: For backwards compatibility with java.awt.Scrollbar.

Specified by:
getBlockIncrement in interface Adjustable
Returns:
the block value increment for the adjustable object
See Also:
Adjustable.getBlockIncrement(), getBlockIncrement(int)

getValue

public int getValue()
Enabled: Returns the scrollbar's value.

Specified by:
getValue in interface Adjustable
Returns:
the model's value property
See Also:
setValue(int)

setValue

public void setValue(int value)
Enabled: Sets the scrollbar's value. This method just forwards the value to the model.

Specified by:
setValue in interface Adjustable
Parameters:
value - the current value
See Also:
getValue(), BoundedRangeModel.setValue(int)

getVisibleAmount

public int getVisibleAmount()
Enabled: 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)

setVisibleAmount

public void setVisibleAmount(int extent)
Enabled: Set the model's extent property.

Specified by:
setVisibleAmount in interface Adjustable
Parameters:
extent - the length of the indicator
See Also:
getVisibleAmount(), BoundedRangeModel.setExtent(int)

getMinimum

public int getMinimum()
Enabled: 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)

setMinimum

public void setMinimum(int minimum)
Enabled: Sets the model's minimum property.

Specified by:
setMinimum in interface Adjustable
Parameters:
minimum - the minimum value
See Also:
getMinimum(), BoundedRangeModel.setMinimum(int)

getMaximum

public int getMaximum()
Enabled: 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)

setMaximum

public void setMaximum(int maximum)
Enabled: Sets the model's maximum property. Note that the scrollbar's value can only be set to maximum - extent.

Specified by:
setMaximum in interface Adjustable
Parameters:
maximum - the maximum value
See Also:
getMaximum(), BoundedRangeModel.setMaximum(int)

getValueIsAdjusting

public boolean getValueIsAdjusting()
Enabled: True if the scrollbar knob is being dragged.

Returns:
the value of the model's valueIsAdjusting property
See Also:
setValueIsAdjusting(boolean)

setValueIsAdjusting

public void setValueIsAdjusting(boolean b)
Enabled: 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.

See Also:
getValueIsAdjusting(), BoundedRangeModel.setValueIsAdjusting(boolean)

setValues

public void setValues(int newValue,
                      int newExtent,
                      int newMin,
                      int newMax)
Enabled: Sets the four BoundedRangeModel properties after forcing the arguments to obey the usual constraints:
 minimum <= value <= value+extent <= maximum
 

See Also:
BoundedRangeModel.setRangeProperties(int, int, int, int, boolean), setValue(int), setVisibleAmount(int), setMinimum(int), setMaximum(int)

addAdjustmentListener

public void addAdjustmentListener(AdjustmentListener l)
Enabled: 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)

removeAdjustmentListener

public void removeAdjustmentListener(AdjustmentListener l)
Enabled: Removes an AdjustmentEvent listener.

Specified by:
removeAdjustmentListener in interface Adjustable
Parameters:
l - the AdjustmentLister to remove
See Also:
addAdjustmentListener(java.awt.event.AdjustmentListener)

getAdjustmentListeners

public AdjustmentListener[] getAdjustmentListeners()
Suppressed: 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)

getMinimumSize

public Dimension getMinimumSize()
Enabled: The scrollbar is flexible along it's scrolling axis and rigid along the other axis.

Overrides:
getMinimumSize in class JComponent
Returns:
the value of the minimumSize property
See Also:
JComponent.setMinimumSize(java.awt.Dimension), ComponentUI

getMaximumSize

public Dimension getMaximumSize()
Enabled: The scrollbar is flexible along it's scrolling axis and rigid along the other axis.

Overrides:
getMaximumSize in class JComponent
Returns:
the value of the maximumSize property
See Also:
JComponent.setMaximumSize(java.awt.Dimension), ComponentUI

setEnabled

public void setEnabled(boolean x)
Enabled: 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 - true if this component should be enabled, false otherwise
See Also:
java.awt.Component#isEnabled, java.awt.Component#isLightweight

writeObject

private void writeObject(ObjectOutputStream s)
                  throws IOException
See readObject() and writeObject() in JComponent for more information about serialization in Swing.

Parameters:
s - the ObjectOutputStream in which to write
IOException

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

public AccessibleContext getAccessibleContext()
Suppressed: 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 JComponent
Returns:
an AccessibleJScrollBar that serves as the AccessibleContext of this JScrollBar


comments?