Module java.desktop
Package javax.swing

Class JSlider

所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible, SwingConstants

@JavaBean(defaultProperty="UI", description="A component that supports selecting a integer value from a range.") public class JSlider extends JComponent implements SwingConstants, Accessible
一个组件,允许用户通过在有界区间内滑动旋钮来图形化选择一个值。旋钮始终位于与指定区间内的整数值匹配的点上。

滑块可以显示主刻度线和主刻度线之间的次刻度线。刻度线之间的值的数量由setMajorTickSpacingsetMinorTickSpacing控制。刻度线的绘制由setPaintTicks控制。

滑块还可以在滑块轨道上的常规间隔(或任意位置)打印文本标签。标签的绘制由setLabelTablesetPaintLabels控制。

更多信息和示例请参阅如何使用滑块,这是The Java Tutorial中的一个部分。

警告: Swing 不是线程安全的。更多信息请参阅Swing的线程策略

警告: 该类的序列化对象将不兼容未来的 Swing 版本。当前的序列化支持适用于短期存储或在运行相同 Swing 版本的应用程序之间的 RMI。从 1.4 版开始,已将所有 JavaBeans 的长期存储支持添加到java.beans包中。请参阅XMLEncoder

自 JDK 版本:
1.2
  • Field Details

    • sliderModel

      protected BoundedRangeModel sliderModel
      处理滑块的数值最大值、最小值和当前位置值的数据模型。
    • majorTickSpacing

      protected int majorTickSpacing
      主刻度线之间的值的数量 -- 大刻度线,用于分隔次刻度线。
    • minorTickSpacing

      protected int minorTickSpacing
      次刻度线之间的值的数量 -- 出现在主刻度线之间的较小刻度线。
      参见:
    • snapToTicks

      protected boolean snapToTicks
      如果为true,则旋钮(及其表示的数据值)将解析为用户放置旋钮的最接近的刻度线。默认为false。
      参见:
    • orientation

      protected int orientation
      滑块是水平的还是垂直的,默认为水平。
      参见:
    • changeListener

      protected ChangeListener changeListener
      changeListener(无后缀)是我们添加到滑块模型的监听器。此监听器初始化为从createChangeListener返回的ChangeListener,默认情况下,它只是将事件转发给直接添加到滑块的ChangeListener(如果有)。
      参见:
    • changeEvent

      protected transient ChangeEvent changeEvent
      每个滑块实例只需要一个ChangeEvent,因为事件的唯一(只读)状态是源属性。这里生成的事件的源始终是“this”。第一次触发事件通知时,事件会延迟创建。
      参见:
  • Constructor Details

    • JSlider

      public JSlider()
      创建一个范围为 0 到 100,初始值为 50 的水平滑块。
    • JSlider

      public JSlider(int orientation)
      使用指定的方向创建一个范围为0100,初始值为50的滑块。方向可以是SwingConstants.VERTICALSwingConstants.HORIZONTAL
      参数:
      orientation - 滑块的方向
      抛出:
      IllegalArgumentException - 如果方向不是VERTICALHORIZONTAL之一
      参见:
    • JSlider

      public JSlider(int min, int max)
      使用指定的最小值和最大值创建水平滑块,初始值等于最小值加最大值的平均值。

      保存滑块数据的BoundedRangeModel处理可能由于不正确设置滑块的最小值和最大值而引起的任何问题。有关详细信息,请参阅BoundedRangeModel文档。

      参数:
      min - 滑块的最小值
      max - 滑块的最大值
      参见:
    • JSlider

      public JSlider(int min, int max, int value)
      使用指定的最小值、最大值和值创建水平滑块。

      保存滑块数据的BoundedRangeModel处理可能由于不正确设置滑块的最小值、初始值和最大值而引起的任何问题。有关详细信息,请参阅BoundedRangeModel文档。

      参数:
      min - 滑块的最小值
      max - 滑块的最大值
      value - 滑块的初始值
      参见:
    • JSlider

      public JSlider(int orientation, int min, int max, int value)
      使用指定的方向、最小值、最大值和初始值创建滑块。方向可以是SwingConstants.VERTICALSwingConstants.HORIZONTAL

      保存滑块数据的BoundedRangeModel处理可能由于不正确设置滑块的最小值、初始值和最大值而引起的任何问题。有关详细信息,请参阅BoundedRangeModel文档。

      参数:
      orientation - 滑块的方向
      min - 滑块的最小值
      max - 滑块的最大值
      value - 滑块的初始值
      抛出:
      IllegalArgumentException - 如果方向不是VERTICALHORIZONTAL之一
      参见:
    • JSlider

      public JSlider(BoundedRangeModel brm)
      使用指定的BoundedRangeModel创建水平滑块。
      参数:
      brm - 用于滑块的BoundedRangeModel
  • Method Details

    • getUI

      public SliderUI getUI()
      获取实现此组件的L&F的UI对象。
      覆盖:
      getUI 在类 JComponent
      返回:
      实现Slider L&F的SliderUI对象
    • setUI

      @BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the slider\'s LookAndFeel.") public void setUI(SliderUI ui)
      设置实现此组件的L&F的UI对象。
      参数:
      ui - SliderUI L&F对象
      参见:
    • updateUI

      public void updateUI()
      将UI属性重置为当前外观的值。
      覆盖:
      updateUI 在类 JComponent
      参见:
    • getUIClassID

      @BeanProperty(bound=false) public String getUIClassID()
      返回渲染此组件的L&F类的名称。
      覆盖:
      getUIClassID 在类 JComponent
      返回:
      字符串"SliderUI"
      参见:
    • createChangeListener

      protected ChangeListener createChangeListener()
      想要以不同方式处理来自模型的ChangeEvent的子类可以重写此方法以返回自定义ChangeListener实现的实例。默认的ChangeListener只是调用fireStateChanged方法将ChangeEvent转发给直接添加到滑块的ChangeListener
      返回:
      ChangeListener的实例
      参见:
    • addChangeListener

      public void addChangeListener(ChangeListener l)
      向滑块添加一个ChangeListener。
      参数:
      l - 要添加的ChangeListener
      参见:
    • removeChangeListener

      public void removeChangeListener(ChangeListener l)
      从滑块中移除一个ChangeListener。
      参数:
      l - 要移除的ChangeListener
      参见:
    • getChangeListeners

      @BeanProperty(bound=false) public ChangeListener[] getChangeListeners()
      返回所有使用addChangeListener()添加到此JSlider的ChangeListener数组。
      返回:
      所有已添加的ChangeListener或如果未添加任何监听器则返回空数组
      自:
      1.4
    • fireStateChanged

      protected void fireStateChanged()
      向所有已注册对ChangeEvent感兴趣的ChangeListener发送一个ChangeEvent,其源是此JSlider。每次从模型接收ChangeEvent时都会调用此方法。

      如有必要,事件实例将被创建并存储在changeEvent中。

      参见:
    • getModel

      public BoundedRangeModel getModel()
      返回处理滑块的三个基本属性(最小值、最大值、值)的BoundedRangeModel
      返回:
      此组件的数据模型
      参见:
    • setModel

      @BeanProperty(description="The sliders BoundedRangeModel.") public void setModel(BoundedRangeModel newModel)
      设置处理滑块的三个基本属性(最小值、最大值、值)的BoundedRangeModel

      尝试将null模型传递给此方法会导致未定义的行为,最有可能会引发异常。

      参数:
      newModel - 要使用的新的、非nullBoundedRangeModel
      参见:
    • getValue

      public int getValue()
      BoundedRangeModel中返回滑块的当前值。
      返回:
      滑块的当前值
      参见:
    • setValue

      @BeanProperty(bound=false, preferred=true, description="The sliders current value.") public void setValue(int n)
      将滑块的当前值设置为n。此方法将新值转发给模型。

      数据模型(BoundedRangeModel的一个实例)处理由于分配错误值而引起的任何数学问题。有关详细信息,请参阅BoundedRangeModel文档。

      如果新值与先前值不同,则会通知所有更改侦听器。

      参数:
      n - 新值
      参见:
    • getMinimum

      public int getMinimum()
      返回滑块支持的最小值,从BoundedRangeModel中。
      返回:
      模型的最小属性值
      参见:
    • setMinimum

      @BeanProperty(preferred=true, description="The sliders minimum value.") public void setMinimum(int minimum)
      将滑块的最小值设置为minimum。此方法将新的最小值转发到模型。

      数据模型(BoundedRangeModel的一个实例)处理分配错误值引起的任何数学问题。有关详细信息,请参阅BoundedRangeModel文档。

      如果新的最小值与先前的最小值不同,则会通知所有更改侦听器。

      参数:
      minimum - 新的最小值
      参见:
    • getMaximum

      public int getMaximum()
      返回滑块支持的最大值,从BoundedRangeModel中。
      返回:
      模型的最大属性值
      参见:
    • setMaximum

      @BeanProperty(preferred=true, description="The sliders maximum value.") public void setMaximum(int maximum)
      将滑块的最大值设置为maximum。此方法将新的最大值转发到模型。

      数据模型(BoundedRangeModel的一个实例)处理分配错误值引起的任何数学问题。有关详细信息,请参阅BoundedRangeModel文档。

      如果新的最大值与先前的最大值不同,则会通知所有更改侦听器。

      参数:
      maximum - 新的最大值
      参见:
    • getValueIsAdjusting

      public boolean getValueIsAdjusting()
      返回模型的valueIsAdjusting属性。有关如何使用此属性的详细信息,请参阅setValueIsAdjusting文档。
      返回:
      模型的valueIsAdjusting属性值
      参见:
    • setValueIsAdjusting

      @BeanProperty(bound=false, expert=true, description="True if the slider knob is being dragged.") public void setValueIsAdjusting(boolean b)
      设置模型的valueIsAdjusting属性。滑块外观实现应在旋钮拖动开始时将此属性设置为true,并在拖动结束时将其设置为false
      参数:
      b - valueIsAdjusting属性的新值
      参见:
    • getExtent

      public int getExtent()
      BoundedRangeModel返回"extent"。这代表旋钮覆盖的值范围。
      返回:
      代表extent的int值
      参见:
    • setExtent

      @BeanProperty(bound=false, expert=true, description="Size of the range covered by the knob.") public void setExtent(int extent)
      设置旋钮覆盖的范围大小。如果用户单击旋钮的任一侧,大多数外观实现将按此量更改值。此方法只是将新的extent值转发到模型。

      数据模型(BoundedRangeModel的一个实例)处理分配错误值引起的任何数学问题。有关详细信息,请参阅BoundedRangeModel文档。

      如果新的extent值与先前的extent值不同,则会通知所有更改侦听器。

      参数:
      extent - 新的extent
      参见:
    • getOrientation

      public int getOrientation()
      返回此滑块的垂直或水平方向。
      返回:
      SwingConstants.VERTICALSwingConstants.HORIZONTAL
      参见:
    • setOrientation

      @BeanProperty(preferred=true, visualUpdate=true, enumerationValues={"JSlider.VERTICAL","JSlider.HORIZONTAL"}, description="Set the scrollbars orientation to either VERTICAL or HORIZONTAL.") public void setOrientation(int orientation)
      将滑块的方向设置为SwingConstants.VERTICALSwingConstants.HORIZONTAL之一。
      参数:
      orientation - HORIZONTALVERTICAL
      抛出:
      IllegalArgumentException - 如果方向不是VERTICALHORIZONTAL之一
      参见:
    • setFont

      public void setFont(Font font)
      设置此组件的字体。
      覆盖:
      setFont 在类 JComponent
      参数:
      font - 此组件的所需Font
      自从:
      1.6
      参见:
    • imageUpdate

      public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h)
      当图像发生更改时,重新绘制组件。当有关于之前使用异步例程(如GraphicsdrawImage方法)请求的图像的更多信息可用时,将调用ImageObserverimageUpdate方法。有关此方法及其参数的更多信息,请参阅imageUpdate的定义。

      ComponentimageUpdate方法在更多图像位可用时逐步在组件上绘制图像。

      如果系统属性awt.image.incrementaldraw丢失或具有值true,则图像将逐步绘制。如果系统属性具有任何其他值,则图像将在完全加载之前不会绘制。

      此外,如果增量绘制生效,则系统属性awt.image.redrawrate的值将被解释为整数,以提供最大重绘速率,以毫秒为单位。如果系统属性丢失或无法解释为整数,则重绘速率为每100ms一次。

      xywidthheight参数的解释取决于infoflags参数的值。

      指定者:
      imageUpdate 在接口 ImageObserver
      覆盖:
      imageUpdate 在类 Component
      参数:
      img - 正在观察的图像
      infoflags - 有关更多信息,请参阅imageUpdate
      x - x坐标
      y - y坐标
      w - 宽度
      h - 高度
      返回:
      如果infoflags指示图像已完全加载,则为false;否则为true
      自从:
      1.7
      参见:
    • getLabelTable

      public Dictionary getLabelTable()
      返回要在哪些值处绘制哪些标签的字典。
      返回:
      包含标签和绘制位置的Dictionary
    • setLabelTable

      @BeanProperty(hidden=true, visualUpdate=true, description="Specifies what labels will be drawn for any given value.") public void setLabelTable(Dictionary labels)
      用于指定在任何给定值处将绘制哪个标签。键-值对的格式为:{ Integer value, java.swing.JComponent label }

      通过使用createStandardLabels方法生成标准值标签的简单方法。

      一旦设置了标签,此方法将调用updateLabelUIs()。请注意,仅当paintLabels属性为true时,才会绘制标签。

      参数:
      labels - 新的标签Dictionary,或null以移除所有标签
      参见:
    • updateLabelUIs

      protected void updateLabelUIs()
      通过在每个标签上调用updateUI来更新标签表中的标签的UI。UI是从当前的外观和感觉中更新的。标签也设置为其首选大小。
      参见:
    • createStandardLabels

      public Hashtable<Integer,JComponent> createStandardLabels(int increment)
      创建一个数字文本标签的Hashtable,从滑块最小值开始,并使用指定的增量。例如,如果调用createStandardLabels( 10 ),并且滑块最小值为零,则将为值0、10、20、30等创建标签。

      要在滑块上绘制标签,必须将返回的Hashtable传递给setLabelTable,并且必须将setPaintLabels设置为true

      有关返回的Hashtable的详细信息,请参阅setLabelTable文档。

      参数:
      increment - 生成的哈希表中标签之间的距离
      返回:
      一个新的标签Hashtable
      抛出:
      IllegalArgumentException - 如果increment小于或等于零
      参见:
    • createStandardLabels

      public Hashtable<Integer,JComponent> createStandardLabels(int increment, int start)
      创建一个数字文本标签的Hashtable,从指定的起始点开始,并使用指定的增量。例如,如果调用createStandardLabels( 10, 2 ),则将为值2、12、22、32等创建标签。

      要在滑块上绘制标签,必须将返回的Hashtable传递给setLabelTable,并且必须将setPaintLabels设置为true

      有关返回的Hashtable的详细信息,请参阅setLabelTable文档。

      参数:
      increment - 生成的哈希表中标签之间的距离
      start - 标签将开始的值
      返回:
      一个新的标签Hashtable
      抛出:
      IllegalArgumentException - 如果start超出范围,或者increment小于或等于零
      参见:
    • getInverted

      public boolean getInverted()
      如果滑块显示的值范围已经被反转,则返回true,
      返回:
      如果滑块值被反转为其正常顺序,则为true
      参见:
    • setInverted

      @BeanProperty(visualUpdate=true, description="If true reverses the slider values from their normal order") public void setInverted(boolean b)
      指定为true以反转滑块显示的值范围,指定为false以将值范围放在正常顺序中。顺序取决于滑块的ComponentOrientation属性。具有LEFT_TO_RIGHT值的正常(非反转)水平滑块其最大值在右侧。具有RIGHT_TO_LEFT值的正常水平滑块其最大值在左侧。正常垂直滑块其最大值在顶部。当滑块被反转时,这些标签也会被反转。

      默认情况下,此属性的值为false

      参数:
      b - 为true时将滑块值反转为其正常顺序
    • getMajorTickSpacing

      public int getMajorTickSpacing()
      该方法返回主要刻度间距。返回的数字表示每个主要刻度标记之间的距离,以值为单位。如果滑块的范围从0到50,主要刻度间距设置为10,则将在以下值旁边获得主要刻度:0、10、20、30、40、50。
      返回:
      主要刻度之间的值数
      参见:
    • setMajorTickSpacing

      @BeanProperty(visualUpdate=true, description="Sets the number of values between major tick marks.") public void setMajorTickSpacing(int n)
      该方法设置主要刻度间距。传入的数字表示每个主要刻度标记之间的距离,以值为单位。如果滑块的范围从0到50,主要刻度间距设置为10,则将在以下值旁边获得主要刻度:0、10、20、30、40、50。

      为了绘制主要刻度,必须将setPaintTicks设置为true

      此方法还将为您设置一个标签表。如果尚未存在标签表,并且主要刻度间距为> 0,并且getPaintLabels返回true,则将生成一个标准标签表(通过调用createStandardLabels)并在主要刻度标记处生成标签。对于上述示例,您将获得文本标签:"0"、"10"、"20"、"30"、"40"、"50"。然后通过调用setLabelTable在滑块上设置标签表。

      参数:
      n - majorTickSpacing属性的新值
      参见:
    • getMinorTickSpacing

      public int getMinorTickSpacing()
      该方法返回次要刻度间距。返回的数字表示每个次要刻度标记之间的距离,以值为单位。如果滑块的范围从0到50,次要刻度间距设置为10,则将在以下值旁边获得次要刻度:0、10、20、30、40、50。
      返回:
      次要刻度之间的值数
      参见:
    • setMinorTickSpacing

      @BeanProperty(visualUpdate=true, description="Sets the number of values between minor tick marks.") public void setMinorTickSpacing(int n)
      该方法设置次要刻度间距。传入的数字表示每个次要刻度标记之间的距离,以值为单位。如果滑块的范围从0到50,次要刻度间距设置为10,则将在以下值旁边获得次要刻度:0、10、20、30、40、50。

      为了绘制次要刻度,必须将setPaintTicks设置为true

      参数:
      n - minorTickSpacing属性的新值
      参见:
    • getSnapToTicks

      public boolean getSnapToTicks()
      如果旋钮(及其表示的数据值)解析为用户将旋钮放置在旁边的最近刻度标记的值,则返回true。
      返回:
      如果值捕捉到最近的刻度标记,则为true,否则为false
      参见:
    • setSnapToTicks

      @BeanProperty(description="If true snap the knob to the nearest tick mark.") public void setSnapToTicks(boolean b)
      指定为true时,使旋钮(及其表示的数据值)解析为用户将旋钮放置在旁边的最近刻度标记的值。默认情况下,此属性为false
      参数:
      b - 为true时将旋钮捕捉到最近的刻度标记
      参见:
    • getPaintTicks

      public boolean getPaintTicks()
      告诉是否要绘制刻度标记。
      返回:
      如果绘制刻度标记,则为true,否则为false
      参见:
    • setPaintTicks

      @BeanProperty(visualUpdate=true, description="If true tick marks are painted on the slider.") public void setPaintTicks(boolean b)
      确定是否在滑块上绘制刻度标记。默认情况下,此属性为false
      参数:
      b - 是否应绘制刻度标记
      参见:
    • getPaintTrack

      public boolean getPaintTrack()
      告诉轨道(滑块滑动的区域)是否要绘制。
      返回:
      如果绘制轨道,则为true,否则为false
      参见:
    • setPaintTrack

      @BeanProperty(visualUpdate=true, description="If true, the track is painted on the slider.") public void setPaintTrack(boolean b)
      确定是否在滑块上绘制轨道。默认情况下,此属性为true。这取决于外观和感觉是否遵守此属性,有些可能选择忽略它。
      参数:
      b - 是否绘制滑块轨道
      参见:
    • getPaintLabels

      public boolean getPaintLabels()
      告诉是否要绘制标签。
      返回:
      如果绘制标签,则为true,否则为false
      参见:
    • setPaintLabels

      @BeanProperty(visualUpdate=true, description="If true labels are painted on the slider.") public void setPaintLabels(boolean b)
      确定是否在滑块上绘制标签。

      此方法还将为您设置一个标签表。如果尚未存在标签表,并且主刻度间距> 0,则将生成一个标准标签表(通过调用createStandardLabels)并在主刻度标记处设置标签。然后通过调用setLabelTable在滑块上设置标签表。

      默认情况下,此属性为false

      参数:
      b - 是否绘制标签
      参见:
    • paramString

      protected String paramString()
      返回此JSlider的字符串表示形式。此方法仅用于调试目的,返回的字符串的内容和格式可能因实现而异。返回的字符串可能为空,但不能为null
      覆盖:
      paramString 在类 JComponent
      返回:
      此JSlider的字符串表示形式。
    • getAccessibleContext

      @BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
      获取与此JSlider关联的AccessibleContext。对于滑块,AccessibleContext采用AccessibleJSlider的形式。如有必要,将创建一个新的AccessibleJSlider实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      覆盖:
      getAccessibleContext 在类 Component
      返回:
      作为此JSlider的AccessibleContext的AccessibleJSlider