Beehive

Apache Beehive の状況を知るために調べてみた。beehiveを見ると活動が停止しているようにみえる… でも実は、http://incubator.apache.org/beehive/がプロジェクト自体のサイトで、きちんと活動は継続していました。2.0へ向けての作業も始まっているようです。

カテゴリー: Java

Swing Painting Guidelines

JavaのSwingによる描画について調べてみたところ、こんなに良い記事がありました。
Painting in AWT and Swing

ここにSwingを使うときのガイドラインがありましたので、意訳して紹介しておきます。

  1. Swingの描画ではAWTとは異なり常にpaintメソッドが使われる(updateメソッドは呼び出されない)
  2. paintメソッドを直接呼ばないで、repaintメソッドを呼ぶこと
  3. 複雑な描画処理をする場合は影響範囲を限定するために、パラメータつきのrepaintメソッド(たとえば public void repaint(int x, int y, int width, int height)など)を呼ぶこと
  4. Swingの描画はpaintComponent()、paintBorder()、paintChildren()を順番に呼び出すので、Swingコンポーネントを拡張(extends)する場合には、独自の描画コードはpaintComponentメソッドにコーディングすること(paintメソッドにはコーディングしない)
  5. Swingには描画の効率に影響する2つのプロパティ、opaque(コンポーネントのすべての点を描画するかしないか)とoptimizedDrawingEnabled(子コンポーネントの重なりがあるか否か)があるので適切に使用すること(getter, setter が用意されている)
  6. Swingコンポーネントのopaqueがtrueに設定されたときはこのコンポーネントの境界内で描画されていた背景はすべて上書きされる
  7. opaque かoptimizedDrawingEnabled のどちらかにfalseが設定されたときは、描画操作に対してより多くの処理が必要になるので、適切な設定をするように気をつけること
  8. UI delegatesをもつSwingコンポーネント(JPanelを含む)を拡張(extends)する場合には、paintComponent()の実装の最初にsuper.paintComponent()を呼び出すこと
  9. SwingはJComponentのdoubleBufferedプロパティでダブルバッファリングを簡単に利用できるようになっており、すべてのSwingコンポーネントでこのプロパティは有効になっていますが、Swingコンテナでこの値をtrueにすると個々の設定を無視してすべてtrueになる
  10. すべてのSwingコンポーネントについてダブルバッファリングは有効にすることを強く推奨する
  11. 複雑な描画をするComponentでは描画対象領域を狭めるためにクリップ領域の指定を上手に利用すること
カテゴリー: Java

AWT Painting Guidelines

JavaのAWTによる描画について調べてみたところ、こんなに良い記事がありました。
Painting in AWT and Swing

ここにAWTを使うときのガイドラインがありましたので、意訳して紹介しておきます。

  1. 基本的には(updateメソッドではなくて)paintメソッドに描画処理を記述すること(updateメソッドはオーバーライドされていなければpaintメソッドを呼ぶので何もかかなくてよい)
  2. paintメソッドを直接呼ぶのではなく、repaintメソッドを呼ぶこと
  3. 複雑な描画処理をする場合は影響範囲を限定するために、パラメータつきのrepaintメソッド(たとえば public void repaint(int x, int y, int width, int height)など)を呼ぶこと
  4. repaintメソッドは内部的にupdateメソッドを呼びますから、paintメソッドで描画された結果へ重ねて描画することをしたいなら、updateメソッドをオーバーライドすること
  5. java.awt.Containerのpaintメソッドをオーバーライドするときは、(最後に)super.paintメソッドを呼び出すこと
  6. 複雑な描画をするComponentでは描画対象領域を狭めるためにクリップ領域の指定を上手に利用すること
カテゴリー: Java

Java Plug-in 1.4 Developer Guide

Java2 SDK のドキュメントには Java Plug-in 1.4 開発者ガイド というのがあるのですが、これのメニューが文字化けしています。これは本文がISO-2022-JPであるにも関わらず、$JDK_HOME/docs/ja/guide/plugin/developer_guide/menu_script.js がEUC-JPで保存されているからですので、ローカルのドキュメントで持っている人は文字コードを変換しておきましょう。フィードバックしようとしたらエラーが発生してレポートを遅れませんでした(T_T)。

カテゴリー: Java

Tool

ちょっとしたツールを作ってみた。

fmlで作ったMLのスプールにあるメールからDate, From, Subject の情報を抜きだして一覧にするために使う。Linuxで動作する。

$ ./create.sh

続きを読む

カテゴリー: Java

OpenOffice.org 2.0 beta requires Java

Java fallout: OpenOffice.org 2.0 and the FOSS community によると、OpenOffice.org 2.0 のいくつかの新機能が JRE を要求することに対して FOSS コミュニティで議論がおきているらしい。Javaが完全なオープンソースとならない限り、この手の議論はなくならないのだろう。そうすると、他に仮想マシンを対象としたフリーの言語がでてきて、各OS用の仮想マシンが実装されてリリースされるという状況になっていくと、Javaは足元をすくわれるかもしれない。

実際のところとしては、OpenOfficeを使うような人にとってJREをインストールすることはさほど手間ではないような気がするので、あまり影響はないような気もするけれど、議論されているのはきっと思想的な部分のような気もするので、とりあえず様子見。

カテゴリー: Java