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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отключить клавишу по нажатии другой(Swing)? 
V
    Опции темы
Killer_13
Дата 25.12.2011, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте, не нашел метода disable, enable или что-то в этом роде, посоветуйте пож как можно отключить клавишу? Я нажал например влево, чтоб мне заблокировалась клавиша вправо. (Swing) 
Почти сделал змейку, но как придумать, чтоб она обратно через себя не перерисовывалась что-то по другому не могу.
Вот как я себе это представляю:

Код

public void keyPressed(KeyEvent key) {

        switch (key.getKeyCode()) {
        case KeyEvent.VK_ESCAPE:
            System.exit(0);
        case KeyEvent.VK_RIGHT:
                        //отключить кл влево
            right();
            break;
        case KeyEvent.VK_LEFT:
            left();
            break;
        case KeyEvent.VK_DOWN:
                        //включить кл влево
                        //отключить кл вверх
            down();
            break;
        case KeyEvent.VK_UP:
                        //включить кл влево
                        //отключить кл вниз
            up();
            break;
        default:
            break;
        }

        Window.window.canvas.display();
    }


и так д...

Спасибо!

P.S. Написал вверху Swing но это по ходу не Swing, так что тема создана в правильном разделе. 

Это сообщение отредактировал(а) Killer_13 - 25.12.2011, 13:44
PM MAIL   Вверх
priam220
Дата 25.12.2011, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



блокировать клавиши вы не сможете. Вы получаете сообщения от ОС о том какая кнопка была нажата и все. А как уже распоряжаться этим - дело Ваше.
Насколько я понимаю, Вы хотите запретить обработку нажатия кнопки, обратной направлению движения змейки. Тогда надо создать общий метод, перед обработчиками нажатия кнопок, который будет помнить последнюю нажатую кнопку и в случае если на обработку пришел код кнопки по направлению противоположной первой, то просто  игнорить ее обработчик.
PM MAIL   Вверх
Killer_13
Дата 26.12.2011, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Интересное решение. smile Спасибо, так и сделаю. smile
PM MAIL   Вверх
Killer_13
Дата 26.12.2011, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Работает как часики. smile

Код

switch (key.getKeyCode()) {
        case KeyEvent.VK_ESCAPE:
            System.exit(0);
        case KeyEvent.VK_RIGHT:
            if (!keyPress.equals("left")) {
                right();
            }
            break;
        case KeyEvent.VK_LEFT:
            if (!keyPress.equals("right")) {
                left();
            }
            break;
        case KeyEvent.VK_DOWN:
            if (!keyPress.equals("up")) {
                down();
            }
            break;
        case KeyEvent.VK_UP:
            if (!keyPress.equals("down")) {
                up();
            }
            break;
        default:
            break;
        }


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

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

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


 




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


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

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