概要

TitledBorderのタイトルに文字列だけでなく、アイコンを表示するように設定します。

サンプルコード

URL url = getClass().getResource("16x16.png");
String path = url.toString();
String title = String.format(
  "<html><table cellpadding='0'><tr><td><img src='%s'></td><td>test</td></tr></table></html>", path);
panel.setBorder(BorderFactory.createTitledBorder(title));
View in GitHub: Java, Kotlin

解説

  • <img>
    • TitledBorder#setTitle(...)を使用して<img>タグでアイコンを指定したHtmlテキストを設定
    • Class#getResource(...)でアイコンのURLを取得して<img>タグのソースに指定
    • アイコンとテキストのベースラインが揃っていない
  • <table> + <img>
    • <table><tr>タグを使用して、アイコンとテキストのベースラインを揃える
  • TitledBorder#paintBorder(...)
    • TitledBorder#paintBorder(...)をオーバーライドしてアイコンを描画
    • タイトル文字列に半角空白で余白を作成し、位置を決め打ちでアイコンを描画
  • ComponentTitledBorder

参考リンク

コメント