запрет писать в JSpinner swing
Как сделать так, чтобы в JSpinner
вручную нельзя было вводить текст.
Пробовал
spinner.setFocusable(false);
Но это не работает
Источник: Stack Overflow на русском
Как сделать так, чтобы в JSpinner
вручную нельзя было вводить текст.
Пробовал
spinner.setFocusable(false);
Но это не работает
Компонент JSpinner
в составе имеет редактор, который в свою очередь в своем составе имеет обычное текстовое поле.
Вам необходимо:
getEditor()
)JComponent
, а конкретной реализацией редактора, вам необходимо привести полученное значение к типу редактора по умолчанию(JSpinner.DefaultEditor
)getTextField()
)setEditable(false)
)Подробно и по шагам:
JSpinner spinner = new JSpinner();
// получаем редактор
JComponent editorComponent = spinner.getEditor();
// приводим значение JComponent к типу редактора спинера по умолчанию(JSpinner.DefaultEditor)
JSpinner.DefaultEditor editor = (JSpinner.DefaultEditor)editorComponent;
// из редактора получаем текстовое поле (JFormattedTextField)
JFormattedTextField textField = editor.getTextField();
// отключаем редактирование на данном поле
textField.setEditable(false);
Все тоже самое только в одну строку:
((JSpinner.DefaultEditor) spinner.getEditor()).getTextField().setEditable(false);
За основу был взят ответ: https://stackoverflow.com/a/29105457/4558866