Swing では、コンポーネント上にテキストを表示するために、drawString メソッドがよく使用されます。ただし、HTML マークアップをレンダリングしようとすると、不十分な場合があります。この制限を克服するための回避策を詳しく見てみましょう。
提供されたサンプル コードで示されているように、drawString は HTML タグをプレーン テキストとして扱います。 HTML 要素を使用してテキストをフォーマットする必要がある場合、この動作はイライラする可能性があります。
drawString のみに依存するのではなく、フライウェイト レンダラー アプローチの使用を検討してください。
この手法を利用すると、 JLabel で HTML タグを指定し、そのレンダリングの場所とスタイルを制御できます。
以下のコード スニペットは、フライウェイト レンダラーの簡略化された実装を示しています。
import javax.swing.*; import javax.swing.plaf.ComponentUI; import java.awt.*; public class FlyweightRenderer { private JLabel renderer = new JLabel("<b>Hello World</b>"); private CellRendererPane crp = new CellRendererPane(); private Component parent; public FlyweightRenderer(Component parent) { this.parent = parent; } public void render(Graphics g, int x, int y) { crp.paintComponent(g, renderer, parent, x, y, renderer.getPreferredSize().width, renderer.getPreferredSize().height); } }
カスタム コンポーネントのPaintComponent メソッドでは、フライウェイト レンダラーを使用して HTML 形式のテキストを描画できます。
@Override protected void paintComponent(Graphics g) { super.paintComponent(g); flyweightRenderer.render(g, 10, 10); }
このフライウェイト レンダラーのアプローチにより、次のことが可能になります。 Swing コンポーネント内で HTML 形式のテキストをレンダリングします。 JLabel のレンダリング位置とスタイルを操作することで、目的の視覚効果を実現できます。
以上がSwing の `drawString` メソッドを使用して HTML マークアップをレンダリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。