JavaとSwingとかでいろいろ

あちこち寄り道した結果見るとわかるいろんなこと。

  • Actionは使える。

JMenuとJToolBarで同様の項目を実装する際、今までは

    • MenuListenerを実装
    • ActionCommandとして文字列を受け取るように
    • 違うコンポーネントに同じMenuListener、同じActionCommandを関連づけ。

としてきましたが、ActionCommandは文字列だわ、Listenerをそれぞれ毎回指定しなくちゃならないわで、えらい面倒くさかったのですが、これがActionをimplementしてメニュー項目ごとに使うようにしたらえらいすっきり。
また、

    • 文字列表現、
    • アイコン
    • 実際の実行するコード
    • 各種コンテキストヘルプ

を一つのインナークラスにまとめることができてコードの可読性がえらい上がりました。
なるほど、こうやって使うものだったのか。

これに気づかず、Windows風に&をつけたりいろいろ調べちゃいました。何も考えずに「開く(O)」と指定しちゃえば良かったんですね(^^;)。
アクセラレータキーも自動で表示されるので楽ちん。

  • MouseEvent.BUTTON2はWindowsだと「ホイールボタン」

気づかずにかなり悩みました。ちなみにコンテキストメニューに使う右ボタンはBUTTON3ね。

  • WindowsLookAndFeelはいまいち

いや、頑張ってますよ。でも、微妙な線で違和感が。
Metalのほうが丸々違うのでいっそすがすがしいです。

  • JAXBは便利

一度xslを作っちゃったら、後はロードのコードをほとんど書かなくてもxmlによるtreeのデータ構造がさくさく出来上がるんですね。
こりゃ便利だわ。


しかし、コード内にデータを的確な姿で埋め込むと、下手に分離するよりもずっと再利用しやすくなるんですね。はじめ、文字列の表現を意地になってstatic finalにしていたのですが、Actionをimlementしたクラスに直接書くようにして可読性が格段に上がったのがなかなか衝撃でした。
Seasideが「テンプレートとかに分けないでコード内に直接書いた方が意味的にわかりやすいから」という言い方をマニュアルでしていましたが、当時は意味がわかりませんでしたけど、今なら何をいいたかったかわかるなぁ。
あ、もちろん、何も考えずにデータとコードを混在させるとはまるとは思いますが。