Swing Application Framework その4:アクション管理

アクション管理の機能

通常UIコンポーネントのイベントを扱うには、ActionListener か AbstractAction を使用します。
Swing Application Framework では以下3つのアクション管理を容易にする機能が利用できます。


アクションイベントのハンドリングメソッドは@Actionアノテーションを付与することで定義できます。

  JButton btnMakeLarger;

  @Override
  protected void startup() {
    ResourceMap resource = ctxt.getResourceMap(this.class);
    resource.injectComponents(this);
    ActionMap map = ctxt.getActionMap(this);

    btnMakeLarger = new JButton();
    btnMakeLarger.setAction(map.get("makeLarger"));
  }

  @Action
  public void makeLarger() {
    Font f = new Font(f.getFontName(), f.getStyle(), txtArea.getFont()++);
    txtArea.setFont(f);
  }

ctxt.getActionMap(this)にてそのクラス中の@ActionアノテーションメソッドからActionインスタンスの生成が自動で行われます。その後、そのインスタンスに対して、該当のリソース情報をリソースファイルから埋め込むことができます。
以下の記載のリソースファイルを用意しておくことで、ボタンのテキストとアイコンが自動的に埋め込まれます。

makeLarger.Action.text = Increase font size
makeLarger.Action.icon = increase.png

上記リソースファイルの切り替えにより、アプリケーションのローカライズが簡単に行える仕組みとなっています。