TITLE:JTextFieldの背景色を半透明にする

JTextFieldの背景色を半透明にする

Posted by terai at 2008-08-11

概要

JTextFieldの背景色を半透明にします。

  • &jnlp;
  • &jar;
  • &zip;

#screenshot

サンプルコード

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);

解説

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

  • 上(field0)
    • 文字列を選択すると、再描画がおかしくなる
    • Nimbus L&F では、再現しない
  • 中(field1)
  • 下(field2)
    • setOpaque(false) とし、paintComponentをオーバーライドして、背景色を描画している

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

#screenshot(,screenshot1.png)

  • GTK L&F でのスクリーンショット

#screenshot(,screenshot2.png)

参考リンク

コメント