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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jFormatterTextField, не дает вписать значение null 
V
    Опции темы
Swatch
Дата 3.9.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день.

Такой вопрос: для jFormatterTextField задан формат следующим образом:
Код

        DecimalFormatSymbols dfs = new DecimalFormatSymbols();
        dfs.setGroupingSeparator(',');
        AbstractFormatter displayFormatter = new NumberFormatter(new DecimalFormat("#,###", dfs));
    ((NumberFormatter)displayFormatter).setValueClass(Double.class);
        AbstractFormatter editFormatter = new NumberFormatter(new DecimalFormat("#,###"));
    ((NumberFormatter)editFormatter).setValueClass(Double.class);
        
        jFormattedTextField1.setFormatterFactory(new DefaultFormatterFactory(displayFormatter,displayFormatter,editFormatter));


Попытка вообще убрать значение из jFormattedTextField1 ни к чему не приводит и в jFormattedTextField1 вставляется значение, которое пытались удалить.

Как сделать так, чтобы можно было оставлять jFormattedTextField-ы пустыми??? smile  smile  smile 
PM MAIL   Вверх
eXcile
Дата 3.9.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



попробуй повешать на компонент KeyListener() и отслеживай DELETE  и  Backspace по кодам клавиш, затем jFormattedTextField1.setText("0");

Добавлено через 11 минут и 21 секунду
вот примерчик:
Код

DecimalFormatSymbols dfs = new DecimalFormatSymbols();
            dfs.setGroupingSeparator(',');
            DecimalFormat number = new DecimalFormat("#,###",dfs);    
            number.setMaximumIntegerDigits(6);                 // максимальное количество циферок
            numberField = new JFormattedTextField(new NumberFormatter(number));    
            numberField.setColumns(15);
            numberField.setValue(new Integer(123456));     
            
            KeyListener listener = new KeyListener(){
             public void keyPressed(KeyEvent e) {
                     if(e.getKeyCode()== e.VK_DELETE){
                      numberField.setText("0");
                     }
             }
              public void keyReleased(KeyEvent e) {
              }

              public void keyTyped(KeyEvent e) {
              }
            };
            numberField.addKeyListener(listener);
            
            
            Integer i = (Integer)numberField.getValue();
            System.out.println(i);

выделяешь текст в компоненте, жмешь delete и у тебя 0
--------------------
Не становитесь рабом шаблона [Винсент Ван Гог]
PM MAIL   Вверх
Swatch
Дата 3.9.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, но я знаю, как 0 вставить. Но мне надо, чтобы можно было поле совсем пустым оставить, то есть сделать его Value равным null. smile 
PM MAIL   Вверх
eXcile
Дата 4.9.2007, 04:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Swatch @  3.9.2007,  13:46 Найти цитируемый пост)
 Но мне надо, чтобы можно было поле совсем пустым оставить, то есть сделать его Value равным null


Ну так и сделай setValue(null);
вот пример:
Код

DecimalFormatSymbols dfs = new DecimalFormatSymbols();
            dfs.setGroupingSeparator(',');
            DecimalFormat number = new DecimalFormat("#,###",dfs);    
            number.setMaximumIntegerDigits(6);                 // максимальное количество циферок
            numberField = new JFormattedTextField(new NumberFormatter(number));    
            numberField.setColumns(15);
            numberField.setValue(new Integer(123456));     
            
            KeyListener listener = new KeyListener(){
             public void keyPressed(KeyEvent e) {
                     if(e.getKeyCode()== e.VK_DELETE){
                      //numberField.setText("");
                      numberField.setValue(null);
                     }
             }
              public void keyReleased(KeyEvent e) {
              }

              public void keyTyped(KeyEvent e) {
              }
            };
            numberField.addKeyListener(listener);
            
            
            Integer i = (Integer)numberField.getValue();
            System.out.println(i);

--------------------
Не становитесь рабом шаблона [Винсент Ван Гог]
PM MAIL   Вверх
Swatch
Дата 5.9.2007, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



так нул не устанавливается:(

А есть еще какой-нибудь способ.
PM MAIL   Вверх
eXcile
Дата 6.9.2007, 04:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Swatch @  5.9.2007,  14:54 Найти цитируемый пост)
так нул не устанавливается:(

после нажатия del в поле numberField, это поле очищается. в eclipse работает, если надо на backspace, то добавь обработку на соответствующую клавишу VK_BACK_SPACE.
--------------------
Не становитесь рабом шаблона [Винсент Ван Гог]
PM MAIL   Вверх
Swatch
Дата 7.9.2007, 06:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я пишу в нетбинзах и там нулл не устанавливается:(

там что-то с AbstractFormatter видимо связано. smile 
PM MAIL   Вверх
Gregy
Дата 7.9.2007, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Netbeans здесь причем? Все нормально работает. Попробуй написать руками код.

Мой офтопик такой: Попробуй в нетбинс не использовать гуй билдер, он там не совсем правильный. Если тяжело работать с Layout'ами посмотри в сторону jgoodies FormLayout(я после знакомства с ним отказался от гуй билдера навсегда) он достаточно простой и прозрачный.
PM MAIL   Вверх
Swatch
Дата 7.9.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Написала форматтер вот так:
Код

DecimalFormatSymbols dfs = new DecimalFormatSymbols();
        dfs.setGroupingSeparator(',');
        AbstractFormatter displayFormatter = new NumberFormatter(new DecimalFormat("#,###", dfs));
    ((NumberFormatter)displayFormatter).setValueClass(Object.class);
        AbstractFormatter editFormatter = new NumberFormatter(new DecimalFormat("#,###"));
    ((NumberFormatter)editFormatter).setValueClass(Object.class);
        

        
        jFormattedTextField1.setFormatterFactory(new DefaultFormatterFactory(displayFormatter,displayFormatter,editFormatter));


А потом на потерю фокуса компонентом проверяла:
Код

private void jFormattedTextField1FocusLost(java.awt.event.FocusEvent evt) {
// TODO: Добавьте здесь Ваш код обработки:
        if (jFormattedTextField1.getText().length() == 0){
            jFormattedTextField1.setValue(null);
        }
    }


Вот теперь все заработало! smile
Спасибо за идеиsmile
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.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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