Для большинства графических интерфейсов, которые я использовал, когда элемент управления, содержащий текст, получает фокус, выделяется все содержимое элемента управления. Это означает, что если вы только начнете печатать, вы полностью замените предыдущее содержимое.
Пример: у вас есть управление вращением, которое инициализировано нулевым значением. Вы переходите к нему и вводите «1». Значение в элементе управления теперь равно 1.
С Swing этого не происходит. Текст в элементе управления не выделен, и точка появляется на том или ином конце существующего текста. Продолжая приведенный выше пример:
С Swing JSpinner, когда вы переходите к элементу управления вращением, карат находится слева. Вы вводите «1», и значение в элементе управления теперь равно 10.
Это приводит меня (и моих пользователей) в отчаяние, и я хотел бы это изменить. Что еще более важно, я хотел бы изменить его глобально, чтобы новое поведение применялось к JTextField, JPasswordField, JFormattedTextField, JTextArea, JComboBox, JSpinner и т. д. Единственный способ, который я нашел для этого, — добавить FocusAdapter к каждому элементу управления и переопределить метод focusGained(), чтобы делать правильные вещи [tm].
Должен быть более простой и менее хрупкий способ. Пожалуйста?
РЕДАКТИРОВАТЬ: еще одна дополнительная информация для этого конкретного случая. Форма, с которой я работаю, была создана с помощью конструктора форм Idea. Это означает, что обычно я не пишу код для создания компонентов. Можно сказать Idea, что вы хотите создать их самостоятельно, но я хотел бы избежать хлопот.
Девиз: Все хорошие программисты в основном ленивы.