S-JIS[2011-04-03] 変更履歴
ScalaのSwingのActionのメモ。
Actionはメニューやボタンの処理を行うのに使用する。
import java.awt.event.{ KeyEvent, InputEvent }
import javax.swing.KeyStroke
import scala.swing.Action
import scala.swing.event.Key
| 方法 | 例 | 備考 |
|---|---|---|
| apply |
Action("コピー(C)") {
println("コピー")
}
|
Actionオブジェクトのapplyメソッドを使う方法。 このapplyメソッドは以下のような定義になっている。 (引数リストが2つある形式であり、左記の波括弧ブロックは基本コンストラクターではない) def apply(title: String)(body: =>Unit) = new Action(title) {
def apply() { body }
}
|
| new |
new Action("コピー(C)") {
override def apply() {
println("コピー")
}
}
|
普通にnewでインスタンスを作る方法。 Actionは抽象クラスであり、applyメソッドを実装する必要がある。 Actionオブジェクトを使う方法だとシンプルだが、コンストラクターを呼べないので細かい設定をすることが出来ない。 |
Actionクラスのほとんどのメンバーにはセッター・ゲッターメソッドが用意されているので、設定および取得することが出来る。
| メンバー名 | 型 | 備考 |
|---|---|---|
| title | String | タイトル。Actionのコンストラクターで指定した内容。 |
| icon | Icon | アイコン。 |
| smallIcon | Icon | 小さいアイコン。 |
| toolTip | String | ツールチップ。メニューやボタンにマウスカーソルを合わせるとポップアップして表示される文言。 |
| longDescription | String | 長めの説明文。ステータスバーに表示されるような文言。 |
| mnemonic | Int | ニーモニックキー。メニューでこのキーを押すとそのメニューが選択される。 KeyEventのVK_〜を指定する。 |
| accelerator | Option[KeyStroke] | アクセラレーターキー。Ctrl+C等のショートカットキー。 Ctrl+Cの場合、 Some(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_DOWN_MASK)) |
| enabled | Boolean | アクションの使用可否。 |
| peer | javax.swing.Action | 実際に使われるJavaのAction。 peer変数自体は読み取り専用だが、peerのActionに対して値を設定する(メソッドを呼び出す)ことは出来る。 |
| apply | () => Unit | アクションの実際の動作(メニューで選択された時の動作)を記述する。 Actionクラス内では抽象メソッドであり、具象クラス側で実装する必要がある。 |