18

私は、Javaでカスタマイズされたルックアンドフィールを実装するいくつかのコードを維持しています。Javaバージョンの最近のアップグレードを行っているときに(他の理由で)、フィールドが見つからないためにルックアンドフィールが壊れていることがわかりました

sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET;

BasicMenuItemUI.layoutMenuItem()これは、 Java 6u02頃に密接に基づいているクラスにあります(これがソースです)。OracleがコードをMenuItemLayoutHelperリファクタリングして、使用している新しいターゲットバージョンであるJava6u31にを含めるようにしました。

私はただ使用することができましたMenuItemLayoutHelperが、それは問題を解決しません。それは、次にJava内部が変更されるまでそれを延期するだけです。したがって、私はこれを解決策として割り引いています。

親の最大テキストオフセットを知る必要なしに、同様の左から右へのレイアウトを実現する方法についてアドバイスを受けていBasicMenuItemUIます(sun.swing.SwingUtilitiesへの悪い依存関係を削除します)。

4

2 に答える 2

4

アルブファンが言ったように、あなたはできません。コードに依存するか、クラスをコピーしてプログラムで使用するか、まったく使用せずにサードパーティのライブラリを使用するか、その機能を使用しない必要があります。

于 2012-09-11T21:48:31.643 に答える
2

しばらく時間がかかったかもしれませんが、問題のコードで一貫して使用されている限り、sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET の代わりに独自の定数を使用できることがわかりました。決して理想的なソリューションではありません。

プラス面として、sun パッケージからの不適切なインポートがコーディング ルール チェックに入りました。

于 2012-11-27T13:17:10.093 に答える