概要

JTextFieldにテキスト属性を設定したフォントを使用して、文字列に下線を引きます。

サンプルコード

Font font = textField.getFont();
Map<TextAttribute, Object> attrs = new HashMap<>(font.getAttributes());
attrs.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_LOW_DOTTED);
textField.setFont(font.deriveFont(attrs));
//...
enum UnderlineStyle {
    UNDERLINE_OFF(-1),
    UNDERLINE_LOW_DASHED(TextAttribute.UNDERLINE_LOW_DASHED),
    UNDERLINE_LOW_DOTTED(TextAttribute.UNDERLINE_LOW_DOTTED),
    UNDERLINE_LOW_GRAY(TextAttribute.UNDERLINE_LOW_GRAY),
    UNDERLINE_LOW_ONE_PIXEL(TextAttribute.UNDERLINE_LOW_ONE_PIXEL),
    UNDERLINE_LOW_TWO_PIXEL(TextAttribute.UNDERLINE_LOW_TWO_PIXEL),
    UNDERLINE_ON(TextAttribute.UNDERLINE_ON);
    public final int style;
    private UnderlineStyle(int style) {
        this.style = style;
    }
}
view all

解説

上記のサンプルでは、Font#deriveFont(...)メソッドに下線の属性キーに点線や破線の属性値を設定したTextAttributeのマップを適用して、下線属性の付いた新しいFontオブジェクトを生成しています。

  • 注:
    • JTextAreaの下にあるJTextFieldのように、コンポーネントの高さが足りないと、下線の種類によっては表示されない場合がある

参考リンク

コメント