Я бы хотел использовать таймер в приложении Scala Swing.Я могу использовать версию Java, только это означает, что я должен реализовать интерфейс ActionListener.Я предпочел бы использовать модель Scala Publishers / Reactors для согласованности, поэтому у меня могут быть вещи, которые listenTo
таймер.
Вот что я попробовал:
class ScalaTimer(time: Int) extends Component {
val t = new javax.swing.Timer(time, new java.awt.event.ActionListener {
def actionPerformed(e: java.awt.event.ActionEvent) {
publish(new scala.swing.event.ActionEvent(this))
}
})
def start() {t.start()}
def stop() {t.stop()}
// etc
}
Не работаетпотому что this
относится к ActionListener, а не к классу ScalaTimer.
Также мне, вероятно, не следует расширять Component
... Я пробовал это, потому что я получаю функциональность Publisher / Reactor, ноне имеет смысла.Должен ли я сделать что-то подобное вместо этого?Если да, есть ли другие черты, которые мне нужно включить, и как мне узнать, какие методы мне нужно реализовать?
class ScalaTimer extends javax.swing.Timer with Publisher {
(Моя IDE сразу помечает «Отсутствующие аргументы для метода Timer (Int, ActionListener)»что кажется немного странным, так как я не вызывал метод.)