JSpinner is a part of javax.swing package. JSpinner contains a single line of input which might be a number or a object from an ordered sequence. The user can manually type in a legal data into the text field of the spinner. The spinner is sometimes preferred because they do not need a drop down list. Spinners contain an upward and a downward arrow to show the previous and the next element when it is pressed.
Constructors of JSpinner are:
- JSpinner(): Creates an empty spinner with an initial value set to zero and no constraints.
- JSpinner( SpinnerModel model): Creates a spinner with a specified spinner model passed as an argument.
Commonly used methods are :
- SpinnerListModel(List l): creates a spinner model with elements of list l. This spinner model can be used to set as a model for spinner.
- SpinnerNumberModel(int value, int max, int min, int step): returns a spinner model whose initial value is set to value, with minimum and maximum value, and a definite step value.
- setValue(Object v): sets the value of the spinner to the object passed as argument.
- getValue(): returns the current value of the spinner.
- getPreviousValue(): returns the previous value of the spinner.
- getNextValue(): returns the next value of the spinner.
1. Program to create a simple JSpinner
// java Program to create a // simple JSpinner import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
class spinner extends JFrame {
// frame
static JFrame f;
// default constructor
spinner()
{
}
// main class
public static void main(String[] args)
{
// create a new frame
f = new JFrame( "spinner" );
// create a JSpinner
JSpinner s = new JSpinner();
// set Bounds for spinner
s.setBounds( 70 , 70 , 50 , 40 );
// set layout for frame
f.setLayout( null );
// add panel to frame
f.add(s);
// set frame size
f.setSize( 300 , 300 );
f.show();
}
} |
Output :
2. Program to create a JSpinner and add ChangeListener to it; Program to select your date of birth using JSpinner.
// Java program to select your // date of birth using JSpinner import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
class spinner1 extends JFrame implements ChangeListener {
// frame
static JFrame f;
// label
static JLabel l, l1;
// spinner
static JSpinner s, s1, s2;
// default constructor
spinner1()
{
}
// main class
public static void main(String[] args)
{
// create an object of the class
spinner1 sp1 = new spinner1();
// create a new frame
f = new JFrame( "spinner" );
// create a label
l = new JLabel( "select your date of birth" );
l1 = new JLabel( "1 January 2000" );
// create a JSpinner with a minimum, maximum and step value
s = new JSpinner();
s1 = new JSpinner( new SpinnerNumberModel( 1 , 1 , 31 , 1 ));
// setvalue of year
s.setValue( 2000 );
// store the months
String months[] = { "January" , "February" , "March" ,
"April" , "May" , "June" , "July" , "August" ,
"September" , "October" , "Novemeber" , "December" };
// create a JSpinner with list values
s2 = new JSpinner( new SpinnerListModel(months));
// add change listener to spinner
s.addChangeListener(sp1);
s1.addChangeListener(sp1);
s2.addChangeListener(sp1);
// set Bounds for spinner
s.setBounds( 70 , 70 , 50 , 40 );
s1.setBounds( 70 , 130 , 50 , 40 );
s2.setBounds( 70 , 200 , 90 , 40 );
// setbounds for label
l.setBounds( 10 , 10 , 150 , 20 );
l1.setBounds( 10 , 300 , 150 , 20 );
// set layout for frame
f.setLayout( null );
// add label
f.add(l);
f.add(l1);
f.add(s);
f.add(s1);
f.add(s2);
// add panel to frame
f.add(s);
// set frame size
f.setSize( 400 , 400 );
f.show();
}
// if the state is changed
public void stateChanged(ChangeEvent e)
{
l1.setText(s1.getValue() + " " + s2.getValue() + " " + s.getValue());
}
} |
Output :
Note: This program will not run in an online compiler please use an Offline IDE.