とあるシステム開発で帳票の印刷を行う際に、HTMLで表現したものを印刷したいという要望があり、その技術調査を行っています。
帳票のライブラリで使用しているGraphics2Dを用いて、JLabelにセットしたHTML文を帳票上に表示するようにしています。
JLabel label = new JLabel(); label.setText("<html><body><span style='font-size: 100%;'>12345678901234567890123456789012345678901234567890</span><span style='font-size: 100%; color:red'>1234567</span></body></html>"); label.setSize(500, 100); label.paint(grx);
上記のような実装で表示した場合、以下のようにspanタグで区切られている部分で空白が生まれてしまいます。

また、最初のspanタグのフォントサイズを小さくした場合、フォントが被ってしまいます。
<html><body><span style='font-size: 90%;'>12345678901234567890123456789012345678901234567890</span><span style='font-size: 100%; color:red'>1234567</span></body></html>

ただ、JFrameを使って表示した場合は、特に文字が被ったりスペースが生まれたりせず、しっかり表示できます。
■解決したいこと
JFrameを使って表示するのと同じようにJLabelで文字列を表示したいのですが、JFrameがどこのメソッドで文字列を描写しているのかがわかりません。
これがわかれば、JLabelのpaintComponetメソッドをオーバーライドして実装できるかなと思います。
JFrameと同じように文字列もといフォントを描写するにはどうすればいいでしょうか?

0 コメント