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
.
JScrollPane
Modifier and Type | Class and Description |
---|---|
protected class |
JScrollBar.AccessibleJScrollBar This class implements accessibility support for the |
JComponent.AccessibleJComponent
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
protected BoundedRangeModel model
The model that represents the scrollbar's minimum, maximum, extent (aka "visibleAmount") and current value.
setModel(javax.swing.BoundedRangeModel)
protected int orientation
setOrientation(int)
protected int unitIncrement
setUnitIncrement(int)
protected int blockIncrement
setBlockIncrement(int)
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.
IllegalArgumentException
- if orientation is not one of VERTICAL, HORIZONTALsetOrientation(int)
, setValue(int)
, setVisibleAmount(int)
, setMinimum(int)
, setMaximum(int)
public JScrollBar(int orientation)
Creates a scrollbar with the specified orientation and the following initial values:
minimum = 0 maximum = 100 value = 0 extent = 10
public JScrollBar()
Creates a vertical scrollbar with the following initial values:
minimum = 0 maximum = 100 value = 0 extent = 10
public void setUI(ScrollBarUI ui)
Sets the L&F object that renders this component.
ui
- the ScrollBarUI
L&F objectUIDefaults.getUI(javax.swing.JComponent)
public ScrollBarUI getUI()
Returns the delegate that implements the look and feel for this component.
public void updateUI()
Overrides JComponent.updateUI
.
updateUI
in class JComponent
JComponent.updateUI()
public String getUIClassID()
Returns the name of the LookAndFeel class for this component.
getUIClassID
in class JComponent
JComponent.getUIClassID()
, UIDefaults.getUI(javax.swing.JComponent)
public int getOrientation()
Returns the component's orientation (horizontal or vertical).
getOrientation
in interface Adjustable
setOrientation(int)
, Adjustable.getOrientation()
public void setOrientation(int orientation)
Set the scrollbar's orientation to either VERTICAL or HORIZONTAL.
IllegalArgumentException
- if orientation is not one of VERTICAL, HORIZONTALgetOrientation()
public BoundedRangeModel getModel()
Returns data model that handles the scrollbar's four fundamental properties: minimum, maximum, value, extent.
setModel(javax.swing.BoundedRangeModel)
public void setModel(BoundedRangeModel newModel)
Sets the model that handles the scrollbar's four fundamental properties: minimum, maximum, value, extent.
getModel()
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.
direction
- is -1 or 1 for up/down respectivelysetUnitIncrement(int)
, setValue(int)
, Scrollable.getScrollableUnitIncrement(java.awt.Rectangle, int, int)
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.
setUnitIncrement
in interface Adjustable
unitIncrement
- the unit incrementgetUnitIncrement(int)
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.
direction
- is -1 or 1 for up/down respectivelysetBlockIncrement(int)
, setValue(int)
, Scrollable.getScrollableBlockIncrement(java.awt.Rectangle, int, int)
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.
setBlockIncrement
in interface Adjustable
blockIncrement
- the block incrementgetBlockIncrement()
public int getUnitIncrement()
For backwards compatibility with java.awt.Scrollbar.
getUnitIncrement
in interface Adjustable
Adjustable.getUnitIncrement()
, getUnitIncrement(int)
public int getBlockIncrement()
For backwards compatibility with java.awt.Scrollbar.
getBlockIncrement
in interface Adjustable
Adjustable.getBlockIncrement()
, getBlockIncrement(int)
public int getValue()
Returns the scrollbar's value.
getValue
in interface Adjustable
setValue(int)
public void setValue(int value)
Sets the scrollbar's value. This method just forwards the value to the model.
setValue
in interface Adjustable
value
- the current value, between minimum
and maximum
- visibleAmount
getValue()
, BoundedRangeModel.setValue(int)
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.
getVisibleAmount
in interface Adjustable
setVisibleAmount(int)
public void setVisibleAmount(int extent)
Set the model's extent property.
setVisibleAmount
in interface Adjustable
extent
- the length of the indicatorgetVisibleAmount()
, BoundedRangeModel.setExtent(int)
public int getMinimum()
Returns the minimum value supported by the scrollbar (usually zero).
getMinimum
in interface Adjustable
setMinimum(int)
public void setMinimum(int minimum)
Sets the model's minimum property.
setMinimum
in interface Adjustable
minimum
- the minimum valuegetMinimum()
, BoundedRangeModel.setMinimum(int)
public int getMaximum()
The maximum value of the scrollbar is maximum - extent.
getMaximum
in interface Adjustable
setMaximum(int)
public void setMaximum(int maximum)
Sets the model's maximum property. Note that the scrollbar's value can only be set to maximum - extent.
setMaximum
in interface Adjustable
maximum
- the maximum valuegetMaximum()
, BoundedRangeModel.setMaximum(int)
public boolean getValueIsAdjusting()
True if the scrollbar knob is being dragged.
setValueIsAdjusting(boolean)
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.
public void setValues(int newValue, int newExtent, int newMin, int newMax)
Sets the four BoundedRangeModel properties after forcing the arguments to obey the usual constraints:
minimum ≤ value ≤ value+extent ≤ maximum
BoundedRangeModel.setRangeProperties(int, int, int, int, boolean)
, setValue(int)
, setVisibleAmount(int)
, setMinimum(int)
, setMaximum(int)
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.
addAdjustmentListener
in interface Adjustable
l
- the AdjustmentLister to addremoveAdjustmentListener(java.awt.event.AdjustmentListener)
, BoundedRangeModel.addChangeListener(javax.swing.event.ChangeListener)
public void removeAdjustmentListener(AdjustmentListener l)
Removes an AdjustmentEvent listener.
removeAdjustmentListener
in interface Adjustable
l
- the AdjustmentLister to removeaddAdjustmentListener(java.awt.event.AdjustmentListener)
public AdjustmentListener[] getAdjustmentListeners()
Returns an array of all the AdjustmentListener
s added to this JScrollBar with addAdjustmentListener().
AdjustmentListener
s added or an empty array if no listeners have been addedprotected void fireAdjustmentValueChanged(int id, int type, int value)
Notify listeners that the scrollbar's model has changed.
public Dimension getMinimumSize()
The scrollbar is flexible along it's scrolling axis and rigid along the other axis.
getMinimumSize
in class JComponent
minimumSize
propertyJComponent.setMinimumSize(java.awt.Dimension)
, ComponentUI
public Dimension getMaximumSize()
The scrollbar is flexible along it's scrolling axis and rigid along the other axis.
getMaximumSize
in class JComponent
maximumSize
propertyJComponent.setMaximumSize(java.awt.Dimension)
, ComponentUI
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.
setEnabled
in class JComponent
x
- a boolean value, where true enables the component and false disables itComponent.isEnabled()
, Component.isLightweight()
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
.
paramString
in class JComponent
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.
getAccessibleContext
in interface Accessible
getAccessibleContext
in class Component
© 1993–2017, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.