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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему getKeyEvent возвращает 0? При обработке KeyEvent код=0 
:(
    Опции темы
Avtarkia
  Дата 8.11.2008, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пытаюсь обработать ввод с клавиатуры в текстовую область. Запоминаются не все введённые символы, а только буквы. Проблема с обработкой кнопки backspace:
Код

private JTextField getJTextField7() {
        if (jTextField7 == null) {
            jTextField7 = new JTextField();
            newName = new String();//сюда сохраняется нужная строка
            jTextField7.setPreferredSize(new Dimension(4, 19));
            jTextField7.addKeyListener(new KeyAdapter() {
                public void keyTyped(KeyEvent e) {
                    int code = e.getKeyCode();//Achtung!
                    if(code == KeyEvent.VK_BACK_SPACE){        
                        if(newName.length() > 0){
                            String str = newName.substring(0,newName.length()-2 );
                            newName = str;
                            //newName = newName.substring(0,newName.length()-2 );
                            System.out.println(newName.toString());            
                        }
                    }
                    String tmp = Character.toString(e.getKeyChar());
                    if(isLetter(tmp)){//метод, проверяющий, является ли символ буквой
                        newName = newName + tmp;
                        System.out.println(newName.toString());                                
                    }                                
                }
            });
        }
        return jTextField7;
    }



Проблема,собственно, в том, что код кнопочки всегда получается = 0((
PM MAIL   Вверх
Старовъръ
Дата 8.11.2008, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А метод keyPressed() не пробовала?

Это сообщение отредактировал(а) Старовъръ - 8.11.2008, 21:45
PM MAIL WWW   Вверх
powerOn
Дата 8.11.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



совсем недавно обсуждалось.

Это сообщение отредактировал(а) powerOn - 8.11.2008, 22:34


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Avtarkia
Дата 9.11.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ок,спасибо smile 
PM MAIL   Вверх
Avtarkia
  Дата 9.11.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Теперь возникла другая проблема. Если в этой текстовой области ввести один неподходящий символ, например, циферку, то она там и остаётся несмотря на  
Код

jTextField7.setText(newName);

Вот кусок кода:
Код

private JTextField getJTextField7() {
        if (jTextField7 == null) {
            jTextField7 = new JTextField();
            newName = null;
            jTextField7.setPreferredSize(new Dimension(4, 19));
            jTextField7.addKeyListener(new KeyAdapter() {   
                public void keyPressed(java.awt.event.KeyEvent e) {    
                    int code = e.getKeyCode();
                    if(code == KeyEvent.VK_BACK_SPACE){
                        if(newName != null){
                            if(newName.length() > 1)
                                newName = newName.substring(0,newName.length()-1 );
                            else{
                                if(newName.length() == 1)
                                    newName = null;
                            }
                        }    
                    }
                    String tmp = Character.toString(e.getKeyChar());
                    if(isLetter(tmp)){
                        if(newName == null)
                            newName = tmp;
                        else
                            newName = newName + tmp;                                        
                    }
                    else{
                        jTextField7.setText(newName);
                    }
                    jTextField7.setText(newName);
                }
                
            });
        }
        return jTextField7;
    }


Может там какой-то дефолтный обработчик работает?...Можно ли в таком случае удалять его через remove.. прямо в коде?
PM MAIL   Вверх
skif18
Дата 23.11.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 358
Регистрация: 17.5.2007
Где: Молдова, Кишинев

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



попробуй перед 
Код

 jTextField7.setText(newName);

дать 
Код

 jTextField7.selectAll();

Код

 Component editor = jTable.getEditorComponent();
                            editor.requestFocus(); // fix!
                            
                            if (editor instanceof JTextField)
                          
                            { 
                                ((JTextField)editor).selectAll();  // а это так, бонус...
                                String str = Character.toString(e.getKeyChar());
                                System.out.println("str="+str);
                                ((JTextField)editor).setText(str);
                            }
                            }

У меня вот так работало.

Это сообщение отредактировал(а) skif18 - 23.11.2009, 16:47


--------------------

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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