JTextFieldの文字列に下線を付ける
Total: 6995
, Today: 2
, Yesterday: 0
Posted by aterai at
Last-modified:
概要
JTextField
にテキスト属性を設定したフォントを使用して、文字列に下線を引きます。
Screenshot
Advertisement
サンプルコード
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);
private final int style;
UnderlineStyle(int style) {
this.style = style;
}
public int getStyle() {
return style;
}
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、Font#deriveFont(...)
メソッドに下線の属性キーに点線や破線の属性値を設定したTextAttribute
のマップを適用して、下線属性の付いた新しいFont
オブジェクトを生成しています。
JTextArea
の下にあるJTextField
のようにコンポーネントの高さが足りないと下線の種類によっては表示されない場合がある
参考リンク
- TextAttribute (Java Platform SE 8)
- java - Is it possible to underline text on JTextField?If Yes, How? - Stack Overflow