I am creating time picker using a JSpinner
. The text inside the JSpinner
is editable. But I want to set the JSpinner
as non editable, because there is the chance to give an invalid value. Can anyone help me?
Asked
Active
Viewed 2.2k times
17
-
Can you comment on jfpoilpret's answer if it helped or not? And if it did, accept it as the correct one? – fish May 27 '10 at 06:43
3 Answers
30
Try the following:
JSpinner spinner = ...;
((DefaultEditor) spinner.getEditor()).getTextField().setEditable(false);
This should work as long as you didn't change the spinner editor yourself by calling spinner.setEditor(...)
.
Tell us if this helps.

jfpoilpret
- 10,449
- 2
- 28
- 32
-
I modified your code,It works Fine. JSpinner ampm=new JSpinner(); JFormattedTextField ampmspin=((JSpinner.DefaultEditor)ampm.getEditor()).getTextField(); ampmspin.setEditable(false); Thank you very much......... – Arivu2020 Jun 16 '10 at 12:18
-
2I had to add this after I set the spinner's list model. Then it worked. – Justin Wiseman Sep 15 '12 at 14:23
-
1
13
A bit shorter:
JSpinner spinner = new JSpinner();
spinner.setEditor(new JSpinner.DefaultEditor(spinner));

Adam Stelmaszczyk
- 19,665
- 4
- 70
- 110
0
When I try this, the spinner can still be edited by click the arrow! – yelliver
You can try setting the step to 0:
mySpinner.setModel(new SpinnerNumberModel(yourDefaultDisplayValue,
minValue, maxValue, step));
You can explore the other spinner models and do the same trick I guess.