Disabling Keyboard Editing in a JSpinner Component

In this section, you will see how to create a non editable Spinner component of Java Swing.

Disabling Keyboard Editing in a JSpinner Component

In this section, you will see how to create a non editable Spinner component of Java Swing.

Disabling Keyboard Editing in a JSpinner Component

Disabling Keyboard Editing in a JSpinner Component

     

In this section, you will see how to create a non editable Spinner component of Java Swing. You can increase it's value by clicking up and down button. Through the given program you can only increase and decrease the value nor write the value directly in the Spinner component of java. The JSpinner component, which is disable for the keyboard editing looks like the following image:

Disabled Swing JSpinner Component for the keyboard editing

In this program, a Spinner component has been created and set for editing mode of the Spinner. The Spinner has been disabled for editing using setEditable() method. Some following methods and APIs are explained as follows:

JFormattedTextField:
This is the class of javax.swing.*; package which creates formatted text field for edit text in the specified format. For creating a JFormattedTextField, the syntax is written like: 
JFormattedTextField tf = ((JSpinner.DefaultEditor)spinner.getEditor()).getTextField();

getTextField():
This method creates a JFormattedTextField for edit in the specified format. This is defined in the JSpinner.DefaultEditor class.

getEditor():
This is the method of JSpinner class. This method is used to get the editor which has been using for the JSpinner component.

Here is the code of the program:

import javax.swing.*;
import java.awt.*;

public class DesableEditingSpinner{
  public static void main(String[] args){
  JFrame frame = new JFrame("Desabling editing Spinner");
  JSpinner spinner = new JSpinner();
  JFormattedTextField tf = ((JSpinner.DefaultEditor)spinner.getEditor())
.getTextField
();
  tf.setEditable(false);
  spinner.setValue(new Integer(100));
  JPanel panel = new JPanel();
  panel.add(spinner);
  frame.add(panel, BorderLayout.NORTH);
  frame.setSize(400400);
  frame.setVisible(true);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Download this example.