私の Swing プロジェクトでは、Java 5とJava 6の両方をサポートする必要があります。カスタムを定義しJComponent( と呼びますPicture)、 に埋め込んだ後、DesignGridLayout マネージャーを使用するJScrollPaneに配置しました。JPanel
DesignGridLayout は、 swing-layoutオープン ソース ライブラリのおかげでベースライン配置をサポートします (Java 5 のベースライン サポートを実装し、新しい Java 6 ベースライン サポートとの互換性を提供します)。
私Pictureのクラスは、正しいベースラインを定義できるようにオーバーライドします。 public int getBaseline(int width, int height)「override」は完全に正しいわけではないことに注意してください。Java6 のメソッドをオーバーライドしますが、Java5 で定義します。
サンプル アプリを Java5 で実行すると、すべて問題ありません。定義したPictureベースラインが正しく使用されています。
ただし、Java6 を使用すると、Picture#getBaseline()メソッドが呼び出されません! もちろん、私の写真のベースラインの配置はひどいものです(中央揃え)。
Java6 ソースをチェックインした後、ビューポート コンポーネント (私のインスタンス)でが最初に呼び出さBasicScrollPaneUIれることがわかりました。そして、 が返された場合にのみ呼び出されます。getBaseline()getBaselineResizeBehavior()PicturegetBaseline()getBaselineResizeBehavior()Component.BaselineResizeBehavior.CONSTANT_ASCENT
今私の問題は、Java5に存在しない列挙型を返すため、Java5に実装できないgetBaselineResizeBehavior()Java6メソッドであることです。JComponentComponent.BaselineResizeBehavior
getBaselineResizeBehavior()だから私の質問は(最後に)次のとおりです。クラスをJava5環境でコンパイルして実行できるようにするには、どうすれば実装(またはシミュレート?)できますか?