сочетание клавиш в java

#java #swing #keylistener

#java #swing #keylistener

Вопрос:

Я хочу добавить своего рода чит-код к программе, которую я пишу. Мне было интересно, как я мог бы это сделать. Например, когда я нахожусь в любом месте экрана, я хочу иметь возможность нажимать определенную комбинацию клавиш, например ctl alt w, и получать от этого какое-либо действие. Я предполагаю, что было бы использовать keylistener и добавить его во фрейм. Буду признателен за любую помощь.

Спасибо,

 class cheat implements KeyListener{

      public void keyPressed(KeyEvent e){

          char key = e.getKeyChar();

          System.out.println(key);

      }
      public void keyReleased(KeyEvent e){}

      public void keyTyped(KeyEvent e){}



      }
  

Комментарии:

1. Что это за программа? Swing?

2. Это разумное предположение; вы пробовали это?

3. Нет, вы НЕ должны использовать KeyListener. Swing был разработан для использования с привязками клавиш.

Ответ №1:

Да, вы бы добавили keylistener. Внутри вашего триггера для вашего слушателя вы можете передать KeyEvent вторичному методу для инкапсуляции логики, а затем действовать соответствующим образом.

 isCheatCode(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_W) {
        int mods = e.getModifiers();
        return (mods amp; InputEvent.ALT_MASK != 0)
        amp;amp; mods amp; InputEvent.CTRL_MASK != 0;
    }
    return false;
}
  

Комментарии:

1. Я создал простой прослушиватель и добавил в фрейм, но ничего не происходит.

2. Давайте посмотрим на ваш метод запуска.

3. Нет, вы не должны использовать KeyListener. Swing был разработан для использования привязок клавиш для этой цели.

4. Это никогда не было абсолютным правилом, но в целом, как я уже сказал, Swing был разработан для использования привязок клавиш. Я пытаюсь продвигать использование Swing так, как оно было разработано. Этот случай определенно подходит. Как правило, лучше использовать API более высокого уровня, когда он доступен. Привязки способствуют использованию действий. Другим преимуществом является то, что привязки могут быть настроены для работы независимо от того, имеет компонент фокус или нет. KeyListeners, где использовались с AWT, потому что не было альтенатива. Смотрите Список привязок клавиш для получения списка привязок по компонентам.

5. Точно. Каждый компонент имеет заранее определенный набор действий. Если вы хотите добавить дополнительное поведение, вы создаете пользовательское действие, а затем привязываете действие к нажатию клавиши. Действия также можно добавлять в JButtons и JMenuItems, так что теперь у вас есть полноценный пользовательский интерфейс для того же действия. Вы когда-нибудь использовали accelerator в JMenuItem. Это реализовано как привязка клавиш на корневой панели фрейма. Вы когда-нибудь использовали mnemonic на кнопке? Это реализовано в виде привязок клавиш для компонента. Примером является вопрос о posters. Он хочет привязать Action к Ctrl Alt W .

Ответ №2:

Вы можете прочитать о том, как использовать привязки клавиш в Java Swing.

Комментарии:

1. 1, для привязки клавиш. Swing был разработан для использования привязок клавиш для требований такого типа.

Ответ №3:

http://download.oracle.com/javase/6/docs/api/java/awt/Robot.html должно быть вашей отправной точкой, если вы хотите реализовать это на java

Комментарии:

1. робот автоматизирует событие щелчка или ввода, я хочу сделать это вручную

Ответ №4:

Ну, в приложении s Swing вы бы делали подобные вещи с помощью KeyListeners наряду с привязкой клавиш. Взгляните на API и практические рекомендации

http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html

http://download.oracle.com/javase/tutorial/uiswing/events/keylistener.html

С уважением!

Комментарии:

1. 1 для привязки клавиш, -1 для KeyListner, не дает права голоса.