Swing/FocusColor のバックアップの現在との差分(No.5)
- category: swing folder: FocusColor title: JTextFieldにフォーカスがある場合の背景色を設定 tags: [JTextField, FocusListener] author: aterai pubdate: 2006-08-07T16:37:20+09:00 description: どのJTextFieldを編集しているのかを分かりやすくするために、フォーカスのあるJTextFieldの背景色を変更します。 image:
概要
概要
どのJTextField
を編集しているのかを分かりやすくするために、フォーカスのあるJTextField
の背景色を変更します。
Screenshot
Advertisement
サンプルコード
サンプルコード
#spandel
private static class BGFocusListener implements FocusListener {
#spanend
private final Color dColor;
private final Color oColor;
public BGFocusListener(Color oColor, Color dColor) {
this.dColor = dColor;
this.oColor = oColor;
#spanadd
class BGFocusListener implements FocusListener {
#spanend
private final Color color;
protected BGFocusListener(Color color) {
this.color = color;
}
@Override public void focusGained(final FocusEvent e) {
((JTextField)e.getSource()).setBackground(dColor);
#spanadd
#spanend
@Override public void focusGained(FocusEvent e) {
e.getComponent().setBackground(color);
}
@Override public void focusLost(final FocusEvent e) {
((JTextField)e.getSource()).setBackground(oColor);
#spanadd
#spanend
@Override public void focusLost(FocusEvent e) {
e.getComponent().setBackground(UIManager.getColor("TextField.background"));
}
}
View in GitHub: Java, Kotlin解説
JTextField
にFocusListener
を追加することで、focusGained
、focusLost
した場合にそれぞれ背景色を変更しています。
解説
上記のサンプルでは、JTextField
にFocusListener
を追加し、focusGained(...)
メソッドをオーバーライドして背景色を指定した色に変更、focusLost(...)
メソッドをオーバーライドしてJTextField
のデフォルト背景色(UIManager.getColor("TextField.background")
)に戻しています。