HTML をレンダリングする JLabel が出力テキストの垂直位置をシフトするのに対し、非 HTML をレンダリングする JLabel はシフトしない理由を理解したいと思います。
- 使用する Java バージョン: 1.6.0_37
- 使用される Swing ルック アンド フィール: Windows ("com.sun.java.swing.plaf.windows.WindowsLookAndFeel")
- OS : Windows 7 64 ビット
コードは本当に些細なことなので、SSCCE はまとめませんでした。しかし、それが助けになるなら、そう言ってください。
むしろ、動作を表示する画像を使用して例を示します。
ラベルの境界を視覚化するために、JLabel の周りに JPanel をコンテナーとして配置しました。JLabel のフォントとテキストを設定すると、
jLabel.getPreferredSize()
メソッドは、レンダリングされたプレーン テキストまたは HTML の境界を返します (これは、周囲の JPanel に設定した正確なサイズです)。HTML をレンダリングすると、テキスト全体が少し下に移動することがはっきりとわかります。
これが発生する理由と、配置を修正するためにできることを知りたいです。
1 つの回避策は、次のように、テキストをレンダリングする Graphics2D を変換して、垂直シフトを補正することです。
g2d.translate( 0, -20 );
しかし、フォント メトリック (フォント サイズなど) に関連する正しい y 値がわかりません。とにかく、この回避策も「間違っている」と感じます。
私は本当にあなたの答えに感謝します、ありがとう!