Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JTextField с заменой символов 
V
    Опции темы
Рубильник
Дата 15.6.2018, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.6.2016

Репутация: нет
Всего: нет



Делаю графический компонент для ввода дробного значения с фиксированной длиной дробной части и максимальной длиной целой части.

Пусть у нас есть элемент с форматом ##.### (ввод - > что получилось в итоге)
тогда 1234.5678->12.345
.12345 -> 0.123

Когда курсор доходит за предел разделителя (.) символы в дробной части должны заменяться, а не добавляться.

Замену я делал так: сначала удалял заменяемый символ, а потом вставлял на его место новый.
В потомке от PlainDocument вызывается myChange(номер символа, новый символ)
Код

        private void myChange(int i, char _c){
            myRemove(i);
            myInsert(i, _c);
        } 

        private void myInsert(int i, char _c){
            try {
                super.insertString(i, String.valueOf(_c), null);
            } catch (BadLocationException ex) {
            }
        }
        
        private void myRemove(int i){
            super.removeUpdate(new DefaultDocumentEvent(i, 1, DocumentEvent.EventType.REMOVE));
        }


Вот только удаление не срабатывает. И символы по прежнему вставляются, а не заменяются.
Что я делаю не так?

ПС:
После введении последнего символа (окончания ввода) необходимо передать фокус следующему полю. Как это организовать? Момент, когда это надо сделать я засечь могу, а какой командой передать фокус не знаю.
PM MAIL   Вверх
Рубильник
Дата 15.6.2018, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.6.2016

Репутация: нет
Всего: нет



Вопрос снят. Надо было удалять не через событие, а через .remove(i, 1);

********
Остался вопрос с передачей фокуса.

И это вопрос снят. 
KeyboardFocusManager.getCurrentKeyboardFocusManager().focusNextComponent();
В правильности не уверен, но пока меня поведение полностью устраивает.

Это сообщение отредактировал(а) Рубильник - 15.6.2018, 12:02
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1198 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.