Module  java.desktop
软件包  javax.swing

Class JSlider

  • All Implemented Interfaces:
    ImageObserverMenuContainerSerializableAccessibleSwingConstants


    @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控制。

    有关更多信息和示例,请参阅“Java教程”中的 How to Use Sliders ”一节

    警告: Swing不是线程安全的。 有关详细信息,请参阅Swing's Threading Policy

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

    从以下版本开始:
    1.2
    另请参见:
    Serialized Form
    • 字段详细信息

      • sliderModel

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

        protected int majorTickSpacing
        主要刻度线之间的值的数量 - 分解小刻度线的较大的标记。
      • minorTickSpacing

        protected int minorTickSpacing
        较小刻度线之间的值数 - 主刻度线之间发生的较小的标记。
        另请参见:
        setMinorTickSpacing(int)
      • snapToTicks

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

        protected int orientation
        滑块是水平还是垂直默认为水平。
        另请参见:
        setOrientation(int)
      • changeEvent

        protected transient ChangeEvent changeEvent
        由于事件的唯一(只读)状态是源属性,因此每个滑块实例只需要一个ChangeEvent 这里产生的事件的来源总是“这”。 事件首次在事件通知被触发时被懒惰地创建。
        另请参见:
        fireStateChanged()
    • 构造方法详细信息

      • JSlider

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

        public JSlider​(int orientation)
        使用范围为0100的指定方向创建滑块,初始值为50 方向可以是SwingConstants.VERTICALSwingConstants.HORIZONTAL
        参数
        orientation - 滑块的方向
        异常
        IllegalArgumentException - 如果方向不是 VERTICALHORIZONTAL
        另请参见:
        setOrientation(int)
      • JSlider

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

        保存滑块数据的BoundedRangeModel可以处理由于在滑块上设置最小值和最大值而导致的任何问题。 有关详细信息,请参阅BoundedRangeModel文档。

        参数
        min - 滑块的最小值
        max - 滑块的最大值
        另请参见:
        BoundedRangeModelsetMinimum(int)setMaximum(int)
      • JSlider

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

        保存滑块数据的BoundedRangeModel可以处理由于在滑块上设置最小值,初始值和最大值而导致的任何问题。 有关详细信息,请参阅BoundedRangeModel文档。

        参数
        min - 滑块的最小值
        max - 滑块的最大值
        value - 滑块的初始值
        另请参见:
        BoundedRangeModelsetMinimum(int)setMaximum(int)setValue(int)
      • JSlider

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

        保存滑块数据的BoundedRangeModel可以处理由于在滑块上设置最小值,初始值和最大值而导致的任何问题。 有关详细信息,请参阅BoundedRangeModel文档。

        参数
        orientation - 滑块的方向
        min - 滑块的最小值
        max - 滑块的最大值
        value - 滑块的初始值
        异常
        IllegalArgumentException - 如果方向不是 VERTICALHORIZONTAL
        另请参见:
        BoundedRangeModelsetOrientation(int)setMinimum(int)setMaximum(int)setValue(int)
      • JSlider

        public JSlider​(BoundedRangeModel brm)
        使用指定的BoundedRangeModel创建水平滑块。
        参数
        brm - 一个 BoundedRangeModel的滑块
    • 方法详细信息

      • getUI

        public SliderUI getUI​()
        获取实现此组件的L&F的UI对象。
        重写:
        getUIJComponent
        结果
        实现Slider L&F的SliderUI对象
      • createChangeListener

        protected ChangeListener createChangeListener​()
        想要从模型处理ChangeEvent s的子ChangeEvent可以覆盖这一点,以返回自定义ChangeListener实现的实例。 默认ChangeListener只需调用fireStateChanged方法将ChangeEvent s转发到直接添加到滑块的ChangeListener
        结果
        一个新的 ChangeListener的实例
        另请参见:
        changeListenerfireStateChanged()ChangeListenerBoundedRangeModel
      • getChangeListeners

        @BeanProperty(bound=false)
        public ChangeListener[] getChangeListeners​()
        返回使用addChangeListener()添加到此JSlider的所有 ChangeListener的数组。
        结果
        添加了所有的 ChangeListener如果没有添加任何监听器,则为空数组
        从以下版本开始:
        1.4
      • fireStateChanged

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

        事件实例在必要时创建,并存储在changeEvent

        另请参见:
        addChangeListener(javax.swing.event.ChangeListener)EventListenerList
      • setModel

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

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

        参数
        newModel - 新的, non-null BoundedRangeModel要使用
        另请参见:
        getModel()BoundedRangeModel
      • getValueIsAdjusting

        public boolean getValueIsAdjusting​()
        从模型返回valueIsAdjusting属性。 有关如何使用的详细信息,请参阅setValueIsAdjusting文档。
        结果
        该模型的价值 valueIsAdjusting属性
        另请参见:
        setValueIsAdjusting(boolean)
      • getExtent

        public int getExtent​()
        BoundedRangeModel返回“extent”。 这表示由旋钮“覆盖”的值的范围。
        结果
        一个int代表程度
        另请参见:
        setExtent(int)BoundedRangeModel.getExtent()
      • setExtent

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

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

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

        参数
        extent - 新的范围
        另请参见:
        getExtent()BoundedRangeModel.setExtent(int)
      • getOrientation

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

        public void setFont​(Font font)
        设置此组件的字体。
        重写:
        setFontJComponent
        参数
        font - 该组件所需的 Font
        从以下版本开始:
        1.6
        另请参见:
        Component.getFont()
      • 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 ,标签才会被true

        参数
        labels - 新的 Dictionary标签,或 null删除所有标签
        另请参见:
        createStandardLabels(int)getLabelTable()setPaintLabels(boolean)
      • createStandardLabels

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

        对于要在滑块上绘制的标签,返回的Hashtable必须传递到setLabelTable ,而setPaintLabels必须设置为true

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

        参数
        increment - 生成的散列表中的标签之间的距离
        结果
        一个新的 Hashtable的标签
        异常
        IllegalArgumentException - 如果 increment小于或等于零
        另请参见:
        setLabelTable(java.util.Dictionary)setPaintLabels(boolean)
      • createStandardLabels

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

        对于要在滑块上绘制的标签,返回的Hashtable必须传递到setLabelTable ,而setPaintLabels必须设置为true

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

        参数
        increment - 生成的散列表中的标签之间的距离
        start - 标签开始的值
        结果
        一个新的 Hashtable的标签
        异常
        IllegalArgumentException - 如果 start超出范围,或者如果 increment小于或等于零
        另请参见:
        setLabelTable(java.util.Dictionary)setPaintLabels(boolean)
      • getInverted

        public boolean getInverted​()
        如果滑块显示的值范围相反,则返回true,
        结果
        如果滑块值与其正常顺序相反,则为true
        另请参见:
        setInverted(boolean)
      • 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​()
        此方法返回主要的tick间距。 返回的数字表示每个主刻度线之间的距离(以值计算)。 如果您有一个范围从0到50的滑块,主刻度间距设置为10,您将获得以下值旁边的主要刻度:0,10,20,30,40,50。
        结果
        主要刻度之间的值的数量
        另请参见:
        setMajorTickSpacing(int)
      • 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属性的新值
        另请参见:
        getMajorTickSpacing()setPaintTicks(boolean)setLabelTable(java.util.Dictionary)createStandardLabels(int)
      • getMinorTickSpacing

        public int getMinorTickSpacing​()
        此方法返回较小的刻度间距。 返回的数字表示每个小标记之间的距离,以值为单位。 如果您有一个范围从0到50的滑块,并且小刻度间距设置为10,则将在以下值旁边获得次要刻度:0,10,20,30,40,50。
        结果
        次要蜱之间的数值
        另请参见:
        getMinorTickSpacing()
      • 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属性的新值
        另请参见:
        getMinorTickSpacing()setPaintTicks(boolean)
      • getSnapToTicks

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

        @BeanProperty(description="If true snap the knob to the nearest tick mark.")
        public void setSnapToTicks​(boolean b)
        指定true使旋钮(及其代表的数据值)解析为用户放置旋钮位置的最近刻度。 默认情况下,此属性为false
        参数
        b - 将旋钮锁定到最近的刻度线
        另请参见:
        getSnapToTicks()
      • getPaintTicks

        public boolean getPaintTicks​()
        告诉是否要勾画刻度线。
        结果
        如果勾号勾画,则为true,否则为false
        另请参见:
        setPaintTicks(boolean)
      • setPaintTicks

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

        public boolean getPaintTrack​()
        告诉曲目(滑块滑入的区域)是否要被绘制。
        结果
        如果跟踪画是真的,否则为false
        另请参见:
        setPaintTrack(boolean)
      • setPaintTrack

        @BeanProperty(visualUpdate=true,
                      description="If true, the track is painted on the slider.")
        public void setPaintTrack​(boolean b)
        确定轨迹是否在滑块上绘制。 默认情况下,此属性为true 这是符合这种财产的外观和感觉,有些人可能会选择忽略它。
        参数
        b - 是否绘制滑块轨道
        另请参见:
        getPaintTrack()
      • getPaintLabels

        public boolean getPaintLabels​()
        告诉标签是否要涂漆。
        结果
        如果标签被绘制,则为true,否则为false
        另请参见:
        setPaintLabels(boolean)
      • setPaintLabels

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

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

        默认情况下,此属性为false

        参数
        b - 是否绘制标签
        另请参见:
        getPaintLabels()getLabelTable()createStandardLabels(int)
      • paramString

        protected String paramString​()
        返回此JSlider的字符串表示形式。 该方法仅用于调试目的,并且返回的字符串的内容和格式可能因实现而异。 返回的字符串可能为空,但可能不是null
        重写:
        paramStringJComponent
        结果
        这个JSlider的字符串表示形式。