Ответ на ключевые события в scala

Я экспериментирую с небольшим количеством Scala gui программирующий (мой первый проект в scala, таким образом, я думал, что запущу с чего-то простого). Но я, кажется, упорно продолжил что-то, что кажется, что должно быть относительно тривиально. У меня есть класс, который расширяет scala.swing. MainFrame, и я хотел бы обнаружить, когда пользователь нажимает клавишу, когда то окно фокусируется. Забавная вещь, я, кажется, не могу найти любой способ заставить то событие стрелять.

Я нашел пример того, как кто-то еще имел вокруг проблемы здесь: http://houseofmirrors.googlecode.com/svn/trunk/src/src/main/scala/HouseGui.scala, но они, кажется, вернулись к использованию Java Swing API, который немного неутешителен. Кто-либо знает, существует ли более идиоматический способ прервать события?

6
задан Ceilingfish 28 June 2010 в 21:58
поделиться

2 ответа

Для решения этой проблемы мне потребовалось сделать следующее:

class MyFrame extends MainFrame {

this.peer.addKeyListener(new KeyListener() {
    def keyPressed(e:KeyEvent) {
      println("key pressed")
    }

    def keyReleased(e:KeyEvent) {
      println("key released")
    }

def keyTyped(e:KeyEvent) {
      println("key typed")
    }
 })

}

Однако это сработало, только если к этому компоненту или его дочерним компонентам не было прикреплено никаких объектов кнопок.

0
ответ дан 10 December 2019 в 00:32
поделиться

Я полагаю, вам нужно прослушать this.keys (где this - элемент GUI, получающий события клавиатуры). См. Эквивалентный вопрос о событии мыши .

1
ответ дан 10 December 2019 в 00:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: