Swing
JavaOneのSwing for the Massesというセッション資料の中で、MozSwingというWebブラウザコンポーネントが紹介されていました。MozSwing download | SourceForge.netMozSwingはXULRunnerのラッパーで、Windows, MacOS, Linux, Solaris用のバイナリが同梱され…
Swing Application Frameworkのアクションメソッドは引数を持たないのが普通ですが、以下の型で引数を宣言しておくと、メソッド呼び出し時にフレームワークが適切なオブジェクトを代入してくれます。 java.awt.event.ActionEvent javax.swing.Action javax.s…
フレームやダイアログの中から特定の条件を満たすコンポーネントを見つけたり、トラバースできると便利だと思い、JDOMをベースにして以下のプログラムを作ってみました。 SwingDOMBuilder SwingPath Swingのコンポーネント階層をDOMに変換して、XPathを使え…
S2Swingもリリースしたことだし、Swingについてどんどん書いていこうと思います。Swing Application FrameworkにはResourceMapという機能があり、リソースをpropertiesファイルに書いておいてコンポーネントに自動インジェクションしたり、手動でルックアッ…
SwingコンポーネントはsetOpaque(false)で背景を透明にできますが、その場合でもマウスイベントはコントロール領域内で捕捉されます。マウスイベントも透過させたい場合は、以下のようにすれば良いようです。これを応用すれば、不定形のコントロールを作って…
Sunからの人材流出継続JSR-296: Swing Application FrameworkのスペックリードだったHans Muller氏が、SunからAdobeに移ってしまったそうです。ショックだなあ。ところで彼は、MLに残した『遺言』の中で、現在のSwing Application Frameworkにおける"several…
各メソッドの働きについて良く混乱するので、まとめます。もっとも、Swingではinvalidate()とvalidate()を直接呼ぶ局面はほとんどないと思います。 invalidate() 自分自身と、全ての親コンポーネントをinvalidにする。 このメソッドはフラグを立てるだけ。 v…
独自に定義したアクションのキーストロークがSwingコンポーネントに吸われてしまってハマることが多いので、自分のためにリストアップ。カーソル移動系の自明なアクションは省略してあります。JTableのF8とか、JSplitPaneのF6/F8辺りは盲点だと思います。 JR…
Swing Application Frameworkでは、メソッドに@Actionアノテーションを付けることでアクションを定義できます。さらに、@ActionにenabledPropertyパラメータやselectedPropertyパラメータを付加することで、アクションの実行可否状態や選択状態を宣言的に記…
以下のように、アノテーションを付けたモデル側のフィールド値と、ビュー側のUIコンポーネント値を自動バインディングするようにしました。 モデル側 public class EmployeeModel { @ReadWrite @NotBlank private String name; @ReadWrite @Required @Conver…
以下のような仕様で、自動バインディングの仕組みを作ってみました。試した感触はなかなか悪くないです。 アクションのバインディング仕様 まず、アクションハンドラとなるメソッドを作成し、@Actionアノテーションを付けます。ここまではSwing Application …
Swing Application Frameworkは、リソースインジェクションや非同期タスクのサポートによって、Swingアプリケーションの開発を支援してくれます。ただし、Swing Application Frameworkの仕組み自体は非常に簡潔で、アプリケーションの「土台中の土台」の部分…
Nimbusの登場で注目度の下がっているらしいSubstance Look & Feelですが、全体的にセンスが良いし、Office 2007風のスキンなんかもあって結構使えると思います。Substanceを使ってちょっと嬉しいのは、JTabbedPaneで「閉じる」ボタンがサポートされているこ…
J2SE 6からSwingに標準搭載されたGroupLayoutは非常に優秀なレイアウトマネージャですが、レイアウトを組み立てるコードは複雑化しやすく、可読性が高いとは言えません。IDEがコードを自動生成するだけなら問題ないですが、手書きでレイアウトコードを作成し…
Swing Application Frameworkのソースは、構成がシンプル(全部で25クラス程度)なので理解しやすく、読んでいて面白い。特に、非同期処理周りは「なるほど!」と納得することだらけ。今までサーバサイドの開発パターンにばかり関心が向いていて、クライアン…
Javaのリッチクライアントを本格的に作る必要が出てきて、SWTかSwingかで迷っていたんだけど、Java2Dや開発済みのSwingコンポーネントを使いたいという理由もあってSwingで行くことにした。SWTならぜひUrumaを試したかったんだけど、今回はSwingということで…
カスタム形状に最適化されたShapeとPathIteratorを自作することになり、参考のためにJDKのソースを眺めていたところ、Ellipse2Dが3次ベジェ曲線で近似描画されていることを知りました。半径1の円の場合、第1象限の円弧を近似する3次ベジェ曲線の制御点は、c …
JSpinner#setFont()を実行しても、指定したフォントはエディタに反映されない。 ならばgetEditor()を呼んで spinner.getEditor().setFont(font); と書けば良いかというと、それも駄目。getEditor()の戻り値の実体はテキストフィールドを持ったパネルなので、…