S-JIS[2011-04-03] 変更履歴
以下のようなメニューを表示するサンプル。
| ファイル(F) | 編集(E) |
import scala.swing.Action
import scala.swing.Label
import scala.swing.MainFrame
import scala.swing.{ MenuBar, Menu, MenuItem }
import scala.swing.SimpleSwingApplication
import scala.swing.event.Key
object MenuSample extends SimpleSwingApplication {
override def top = new MainFrame { frame =>
title = "メニューサンプル"
menuBar = new MenuBar {
contents += new Menu("ファイル(F)") {
mnemonic = Key.F
contents += new MenuItem(Action("新規ウィンドウ(N)") {
println("新規ウィンドウ")
}) {
mnemonic = Key.N
}
contents += new MenuItem(Action("終了(X)") {
frame.dispose()
}) {
mnemonic = Key.X
}
}
contents += new Menu("編集(E)") {
mnemonic = Key.E
contents += new MenuItem(Action("コピー(C)") {
println("コピー")
}) {
mnemonic = Key.C
}
contents += new MenuItem(Action("貼り付け(P)") {
println("ペースト")
}) {
mnemonic = Key.P
}
}
}
contents = new Label("メニューの実験です")
}
}
MenuおよびMenuItemでメニュー名(テキスト)を指定しただけでは、キー部分に下線は引かれない。
下線を引くにはニーモニック(mnemonic)を指定する必要がある。
| コーディング例 | 備考 |
|---|---|
new Menu("ファイル(F)") {
mnemonic = Key.F
}
|
mnemonicで指定する方法。 Keyは列挙型。 |
new Menu("ファイル(F)") {
displayedMnemonicIndex = "ファイル(F)".lastIndexOf('F')
}
new Menu("ファイル(F)") {
displayedMnemonicIndex = text.lastIndexOf('F')
}
|
displayedMnemonicIndexでテキスト内の位置(文字のインデックス)を指定する方法。 textメソッドは、Menu(やMenuItem)のコンストラクターで指定した文字列を取得する。 ただしこの指定のみだと下線を表示するだけで、実際にキーを押しても反応しない。 |
new MenuItem(new Action("コピー(C)") { mnemonic = Key.C.id override def apply() { println("コピー") } }) |
Actionの中で指定する方法。 Action内のmnemonicはKeyでなくInt(KeyEventのVK_〜)を指定する。 KeyのidはKeyEventのVK_〜そのもの。 |