模块 java.desktop

类 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. 中的一个部分

Warning: Swing 不是线程安全的。有关详细信息,请参阅 Swing 的线程策略

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

自从:
1.2
  • 字段详细信息

    • sliderModel

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

      protected int majorTickSpacing
      主要刻度线之间的值的数量——打破次要刻度线的较大标记。
    • minorTickSpacing

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

      protected boolean snapToTicks
      如果为真,则旋钮(及其代表的数据值)解析为用户放置旋钮的位置旁边最近的刻度线。默认为假。
      参见:
    • orientation

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

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

      protected transient ChangeEvent  changeEvent
      每个滑块实例只需要一个 ChangeEvent,因为事件的唯一(只读)状态是源属性。这里产生的事件源总是“this”。该事件是在第一次触发事件通知时延迟创建的。
      参见:
  • 构造方法详细信息

    • JSlider

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

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

      public JSlider(BoundedRangeModel  brm)
      使用指定的 BoundedRangeModel 创建水平滑块。
      参数:
      brm - 滑块的 BoundedRangeModel
  • 方法详情

    • 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 - 新的,non-null BoundedRangeModel 使用
      参见:
    • 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 返回“范围”。这表示旋钮“覆盖”的值范围。
      返回:
      表示范围的 int
      参见:
    • setExtent

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

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

      如果新的范围值与以前的范围值不同,则会通知所有更改监听。

      参数:
      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 - 如果方向不是 VERTICAL , HORIZONTAL 之一
      参见:
    • 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 的值将被解释为一个整数,以提供最大重绘率(以毫秒为单位)。如果系统属性缺失或无法解释为整数,则重绘速率为每 100 毫秒一次。

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

      指定者:
      imageUpdate 在接口 ImageObserver
      重写:
      imageUpdate 在类 Component
      参数:
      img - 正在观察的图像
      infoflags - 请参阅 imageUpdate 了解更多信息
      x - 的x协调
      y - 的y协调
      w - 宽度
      h - 高度
      返回:
      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。用户界面是从当前的外观和感觉更新而来的。标签也设置为其首选大小。
      参见:
    • 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,
      返回:
      如果滑块值与其正常顺序相反,则为真
      参见:
    • setInverted

      @BeanProperty (visualUpdate =true, description ="If true reverses the slider values from their normal order") public void setInverted(boolean b)
      指定 true 以反转为滑块显示的值范围,指定 false 以正常顺序放置值范围。顺序取决于滑块的 ComponentOrientation 属性。 ComponentOrientation 值为 LEFT_TO_RIGHT 的正常(非反转)水平滑块在右侧具有最大值。 ComponentOrientation 值为 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