Swing/TranslucentTextField のバックアップの現在との差分(No.5)
TITLE:JTextFieldの背景色を半透明にする
Posted by terai at 2008-08-11
JTextFieldの背景色を半透明にする
JTextFieldの背景色を半透明にします。- category: swing folder: TranslucentTextField title: JTextFieldの背景色を半透明にする tags: [JTextField, Translucent] author: aterai pubdate: 2008-08-11T12:27:41+09:00 description: JTextFieldの背景色を半透明にしても、文字列選択やキャレットの点滅などで描画が乱れないようにする方法をテストします。 image:
概要
JTextField
の背景色を半透明にしても、文字列選択やキャレットの点滅などで描画が乱れないようにする方法をテストします。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
サンプルコード
#spanend
#spanadd
Color BG_COLOR = new Color(1f, .8f, .8f, .2f);
#spanend
#spandel
**サンプルコード [#taebf677]
#spanend
#spandel
#code{{
#spanend
#spandel
Color BG_COLOR = new Color(1f,.8f,.8f,.2f);
#spanend
#spandel
#spanend
#spandel
field0 = new JTextField("aaaaaaaaa");
#spanend
#spanadd
field0 = new JTextField("000000000");
#spanend
field0.setBackground(BG_COLOR);
#spandel
field1 = new JTextField("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
#spanend
#spanadd
field1 = new JTextField("111111111111111111");
#spanend
field1.setOpaque(false);
field1.setBackground(BG_COLOR);
#spandel
field2 = new JTextField("cccccccccccccccccccccc") {
#spanend
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
#spanadd
field2 = new JTextField("22222222222222222222") {
#spanend
@Override protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setPaint(getBackground());
g2.fillRect(0, 0, getWidth(), getHeight());
g2.dispose();
super.paintComponent(g);
}
};
field2.setOpaque(false);
field2.setBackground(BG_COLOR);
View in GitHub: Java, Kotlin解説
上記のサンプルでは、それぞれアルファ値を使った背景色をJTextFieldに設定しています。解説
上記のサンプルでは、それぞれアルファ値を使った半透明の背景色をJTextField
に設定しています。
- 上: field0
- 文字列を選択すると、再描画がおかしくなる
- Nimbus L&F では、再現しない
- 中: field1
- setOpaque(false)とすると、背景色は描画されない
- Nimbus L&F では、背景色が描画される
- 下: field2
- setOpaque(false) とし、paintComponentをオーバーライドして、背景色を描画している
-
0
:setOpaque(true)
- 文字列を選択するとキャレットの点滅などの再描画で残像が表示されてしまう
-
NimbusLookAndFeel
では発生しない
-
1
:setOpaque(false)
-
setOpaque(false)
とすると背景色は描画されない -
NimbusLookAndFeel
では背景色が描画される
-
-
2
:1 + paintComponent
-
setOpaque(false)
を設定、かつpaintComponent(...)
メソッドをオーバーライドして背景色を描画
-
- Nimbus L&F (build 1.6.0_10-rc-b28) でのスクリーンショット
-
NimbusLookAndFeel
でのスクリーンショット
- GTK L&F でのスクリーンショット
-
GTKLookAndFeel
でのスクリーンショット
参考リンク
- 江戸の文様(和風素材・デスクトップ壁紙)
- 名物裂から雲鶴をサンプルの壁紙として拝借しています。
参考リンク
- 江戸の文様(和風素材・デスクトップ壁紙)
- 背景画像として名物裂から雲鶴を借用
- Backgrounds With Transparency « Java Tips Weblog