S2Swing

S2Swing FAQ

全般

S2Swingとは何ですか?

S2Swingは、Swing Application FrameworkとBeans Bindingをベースとした、SwingによるGUIアプリケーション開発をサポートするフレームワークです。

Swing Application Frameworkとは何ですか?

Swing Application Framework(JSR 296)は、Swingアプリケーションの開発を簡略化するためのライブラリです。 Swing APIを抽象化し、リソースインジェクションやアクションなど、アプリケーションの共通的基盤となる機能を提供しています。

https://appframework.dev.java.net/

Beans Bindingとは何ですか?

Beans Binding(JSR 295)は、複数のオブジェクトのプロパティ同期を実現するAPIです。主に、JavaBeansオブジェクトとSwingコンポーネントの同期を 目的として開発されています。Beans Bindingを使用することで、モデルとビューの分離が容易になり、メンテナンス性の高いGUIコードを記述することが可能になります。

https://beansbinding.dev.java.net/

S2Swingが提供する機能は何ですか?

S2Swingでは、主に以下の機能を提供します。

S2Swingのサンプルコードはありますか?

個別機能の使用法を示すサンプルコードは、チュートリアルの中にあります。 また、s2swing-tutorialパッケージには、より本格的なサンプルとして、メモ帳アプリケーション(notepad)のコードがあります。

S2Swingを使用するメリットは何ですか?Swing Application FrameworkとBeans Bindingだけで十分ではないのですか?

S2Swingには、Swing Application FrameworkとBeans Bindingだけでは実現できない大きなメリットが3つあります。

S2Swingに、なぜS2Containerが必要なのですか?

S2ContainerのAOP機能やイントロスペクション機能を使用しているためです。

NetBeansでは、Swingアプリケーションの開発用にSwing Application FrameworkとBeans Bindingが最初から組み込まれています。NetBeansでのSwing開発に、S2Swingを使用する意義はありますか?

NetBeansではSwing開発用にIDEが充実していますので、S2Swingの一部の機能は使用する必要がないでしょう。 しかし、@S2Actionアノテーションや、ObservableBeansによるバインディングの支援、またバリデーションやコンバータの機能は、 NetBeans環境下でも十分に有用です。

使用方法

S2Swingを使用する場合、フレームやダイアログは必ずS2FrameクラスやS2Dialogクラスを継承しないといけないのですか?

S2FrameクラスやS2Dialogクラスの継承は必須ではありません。リソースやアクションのインジェクションが不要なウィンドウについては、 JFrameやJDialogを直接使用しても全く問題ありません。また、インジェクションが必要な場合で、ウィンドウがS2FrameクラスやS2Dialogクラスを 基底クラスにできないときには、ウィンドウクラスにS2ViewObjectインタフェースを実装してください。

ウィンドウをsetVisible()メソッドで表示すると、アクションやリソースが設定されません。

アクションやリソースのインジェクションを行うためには、S2SingleFrameApplication#show()メソッドを使用してウィンドウを表示する必要があります。

Java5の環境で、@S2Actionアノテーションのselected引数が機能しません。

Java5の環境でselected引数を機能させるには、アクションに対応するUIコンポーネントを JButton / JToggleButton / JCheckBox / JRadioButton / JCheckBoxMenuItem / JRadioButtonMenuItem の代わりに S2Button / S2ToggleButton / S2CheckBox / S2RadioButton / S2CheckBoxMenuItem / S2RadioButtonMenuItem とする必要があります。

バインディングの際には、モデルオブジェクトを必ずObservableBeans.create()メソッドで生成しなくてはならないのですか?

必ずしもそうではありません。ObservableBeans.create()メソッドの役割は、モデルクラスのプロパティのsetterメソッドにfirePropertyChange() メソッドの呼び出しを埋め込んで、プロパティの変更を監視可能にすることです。setter中にすでにfirePropertyChange()メソッドの呼び出しが記述済みである場合や、 モデルのプロパティ変更をUIコンポーネントに伝搬する必要がない場合は、ObservableBeans.create()メソッドを使用する必要はありません。

フレームやダイアログに対して、S2Containerからロジック等を自動的にDIする機能はありますか?

S2Swingとしては、バリデータとコンバータをS2ContainerからDIする機能を持っています。 バリデータとコンバータ以外については、DIに関する独自機能は今のところ特にありません。 もちろん、アプリケーションコードからS2Containerを適宜呼び出すことによって、DIを行うことは自由にできます。

Copyright © 2008-2009 The Seasar Foundation and the others. All rights reserved.