WindowStateListener
scala.swing で MainFrame のリアクションにを追加するにはどうすればよいですか?
適切なクラスがないようにscala.swing.event
思われますか?
これはそのままでは不可能ですがscala.swing
(確かに 2.9.1 のソースを grep しましたWindowStateListener
)、自分で作成するのは非常に簡単です。
import swing._
case class WindowStateChanged(
override val source: Window,
oldState: Int,
newState: Int
) extends event.WindowEvent(source)
trait StateListeningWindow extends Window { outer =>
this.peer.addWindowStateListener(new java.awt.event.WindowStateListener {
def windowStateChanged(e: java.awt.event.WindowEvent) {
publish(WindowStateChanged(outer, e.getOldState, e.getNewState))
}
})
}
混ぜるだけですStateListeningWindow
:
object WindowStateDemo extends SimpleSwingApplication {
def top = new MainFrame with StateListeningWindow {
import java.awt.Frame._
reactions += {
case WindowStateChanged(_, _, ICONIFIED) => // Do something.
case WindowStateChanged(_, oldState, newState) => // Something else.
}
}
}
java.awt.Frame
より慣用的なもののために定数を簡単にラップすることもできます。