Swing JSpinner Class



The class JSpinner is a component which lets the user select a number or an object value from an ordered sequence using an input field.

Class declaration

Following is the declaration for javax.swing.JSpinner class:

public class JSpinner
   extends JComponent
      implements Accessible

Class constructors

S.N.Constructor & Description
Constructs a spinner with an Integer SpinnerNumberModel with initial value 0 and no minimum or maximum limits.
2JSpinner(SpinnerModel model)
Constructs a complete spinner with pair of next/previous buttons and an editor for the SpinnerModel.

Class methods

S.N.Method & Description
1void addChangeListener(ChangeListener listener)
Adds a listener to the list that is notified each time a change to the model occurs.
2void commitEdit()
Commits the currently edited value to the SpinnerModel.
3protected JComponent createEditor(SpinnerModel model)
This method is called by the constructors to create the JComponent that displays the current value of the sequence.
4protected void fireStateChanged()
Sends a ChangeEvent, whose source is this JSpinner, to each ChangeListener.
5AccessibleContext getAccessibleContext()
Gets the AccessibleContext for the JSpinner
6ChangeListener[] getChangeListeners()
Returns an array of all the ChangeListeners added to this JSpinner with addChangeListener().
7JComponent getEditor()
Returns the component that displays and potentially changes the model's value.
8SpinnerModel getModel()
Returns the SpinnerModel that defines this spinners sequence of values.
9Object getNextValue()
Returns the object in the sequence that comes after the object returned by getValue().
10Object getPreviousValue()
Returns the object in the sequence that comes before the object returned by getValue().
11SpinnerUI getUI()
Returns the look and feel (L&F) object that renders this component.
12String getUIClassID()
Returns the suffix used to construct the name of the look and feel (L&F) class used to render this component.
13Object getValue()
Returns the current value of the model, typically this value is displayed by the editor.
14void removeChangeListener(ChangeListener listener)
Removes a ChangeListener from this spinner.
15void setEditor(JComponent editor)
Changes the JComponent that displays the current value of the SpinnerModel.
16void setModel(SpinnerModel model)
Changes the model that represents the value of this spinner.
17void setUI(SpinnerUI ui)
Sets the look and feel (L&F) object that renders this component.
18void setValue(Object value)
Changes current value of the model, typically this value is displayed by the editor.
19void updateUI()
Resets the UI property with the value from the current look and feel.

Methods inherited

This class inherits methods from the following classes:

  • javax.swing.JComponent

  • java.awt.Container

  • java.awt.Component

  • java.lang.Object

JSpinner Example

Create the following java program using any editor of your choice in say D:/ > SWING > com > tutorialspoint > gui >

package com.tutorialspoint.gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class SwingControlDemo {
   private JFrame mainFrame;
   private JLabel headerLabel;
   private JLabel statusLabel;
   private JPanel controlPanel;

   public SwingControlDemo(){

   public static void main(String[] args){
      SwingControlDemo  swingControlDemo = new SwingControlDemo();      

   private void prepareGUI(){
      mainFrame = new JFrame("Java Swing Examples");
      mainFrame.setLayout(new GridLayout(3, 1));
      mainFrame.addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent windowEvent){
      headerLabel = new JLabel("", JLabel.CENTER);        
      statusLabel = new JLabel("",JLabel.CENTER);    


      controlPanel = new JPanel();
      controlPanel.setLayout(new FlowLayout());


   private void showSpinnerDemo(){
      headerLabel.setText("Control in action: JSpinner"); 
      SpinnerModel spinnerModel =
         new SpinnerNumberModel(10, //initial value
            0, //min
            100, //max
      JSpinner spinner = new JSpinner(spinnerModel);
      spinner.addChangeListener(new ChangeListener() {
         public void stateChanged(ChangeEvent e) {
            statusLabel.setText("Value : " 
            + ((JSpinner)e.getSource()).getValue());

Compile the program using command prompt. Go to D:/ > SWING and type the following command.

D:\SWING>javac com\tutorialspoint\gui\SwingControlDemo.java

If no error comes that means compilation is successful. Run the program using following command.

D:\SWING>java com.tutorialspoint.gui.SwingControlDemo

Verify the following output

Swing JSpinner