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クラス内では抽象メソッドであり、具象クラス側で実装する必要がある。 |