• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JTextFieldの背景色を半透明にする
#navi(../)
*JTextFieldの背景色を半透明にする [#x96d09bf]
Posted by [[terai]] at 2008-08-11

#contents

**概要 [#e25050b5]
JTextFieldの背景色を半透明にします。

-&jnlp;
-&jar;
-&zip;

#screenshot

**サンプルコード [#taebf677]
#code{{
Color BG_COLOR = new Color(1f,.8f,.8f,.2f);

field0 = new JTextField("aaaaaaaaa");
field0.setBackground(BG_COLOR);

field1 = new JTextField("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
field1.setOpaque(false);
field1.setBackground(BG_COLOR);

field2 = new JTextField("cccccccccccccccccccccc") {
  @Override
  protected void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D)g;
    g2.setPaint(getBackground());
    g2.fillRect(0, 0, getWidth(), getHeight());
    super.paintComponent(g);
  }
};
field2.setOpaque(false);
field2.setBackground(BG_COLOR);
}}

**解説 [#p23f641d]
上記のサンプルでは、それぞれアルファ値を使った背景色をJTextFieldに設定しています。

-上(field0)
--文字列を選択すると、再描画がおかしくなる
--Nimbus L&F では、再現しない
-中(field1)
--setOpaque(false)とすると、背景色は描画されない
--Nimbus L&F では、背景色が描画される
---参考:[[Laird Nelson's Blog: Nimbus and Opacity>http://weblogs.java.net/blog/ljnelson/archive/2008/07/nimbus_and_opac.html]]
#screenshot(,screenshot1.png) 
-下(field2)
--setOpaque(false) とし、paintComponentをオーバーライドして、背景色を描画している
--Nimbus L&F では、二重に描画される

----
Nimbus L&F (build 1.6.0_10-rc-b28) でのスクリーンショット

#screenshot(,screenshot1.png)
**参考リンク [#s707327e]
-[[江戸の文様(和風素材・デスクトップ壁紙)>http://www.viva-edo.com/komon/edokomon.html]]
--壁紙を拝借しています。
--名物裂から雲鶴を壁紙として拝借しています。

**コメント [#l25f2c0b]
#comment