S-JIS[2011-04-03] 変更履歴

Scala Action(Swing)

ScalaSwingのActionのメモ。
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のメンバー

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

Scala Swingへ戻る / Scala目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま