Swing/TranslucentTextField のバックアップの現在との差分(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/TranslucentTextField へ行く。
- 1 (2008-08-11 (月) 12:27:41)
- 2 (2008-08-11 (月) 13:42:33)
- 3 (2008-08-12 (火) 18:33:35)
- 4 (2009-07-07 (火) 19:36:39)
- 5 (2010-12-13 (月) 21:14:03)
- 6 (2010-12-14 (火) 14:49:32)
- 7 (2012-10-24 (水) 13:50:10)
- 8 (2012-10-26 (金) 22:04:40)
- 9 (2013-01-19 (土) 20:14:58)
- 10 (2014-11-01 (土) 00:46:09)
- 11 (2014-11-18 (火) 16:02:45)
- 12 (2015-12-16 (水) 16:42:58)
- 13 (2016-05-27 (金) 13:18:05)
- 14 (2017-08-15 (火) 13:50:02)
- 15 (2017-11-02 (木) 15:32:16)
- 16 (2017-11-02 (木) 15:34:40)
- 17 (2018-08-10 (金) 16:20:11)
- 18 (2020-08-08 (土) 16:31:19)
- 19 (2021-12-28 (火) 12:20:50)
- 20 (2022-08-20 (土) 22:15:25)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JTextFieldの背景色を半透明にする #navi(../) *JTextFieldの背景色を半透明にする [#x96d09bf] Posted by [[terai]] at 2008-08-11 --- category: swing folder: TranslucentTextField title: JTextFieldの背景色を半透明にする tags: [JTextField, Translucent] author: aterai pubdate: 2008-08-11T12:27:41+09:00 description: JTextFieldの背景色を半透明にしても、文字列選択やキャレットの点滅などで描画が乱れないようにする方法をテストします。 image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTV03Q10yI/AAAAAAAAAoQ/xH8xmeARg4k/s800/TranslucentTextField.png --- * 概要 [#summary] `JTextField`の背景色を半透明にしても、文字列選択やキャレットの点滅などで描画が乱れないようにする方法をテストします。 #contents #download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTV03Q10yI/AAAAAAAAAoQ/xH8xmeARg4k/s800/TranslucentTextField.png) **概要 [#e25050b5] JTextFieldの背景色を半透明にします。 * サンプルコード [#sourcecode] #code(link){{ Color BG_COLOR = new Color(1f, .8f, .8f, .2f); -&jnlp; -&jar; -&zip; #screenshot **サンプルコード [#taebf677] #code{{ Color BG_COLOR = new Color(1f,.8f,.8f,.2f); field0 = new JTextField("aaaaaaaaa"); field0 = new JTextField("000000000"); field0.setBackground(BG_COLOR); field1 = new JTextField("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); field1 = new JTextField("111111111111111111"); field1.setOpaque(false); field1.setBackground(BG_COLOR); field2 = new JTextField("cccccccccccccccccccccc") { @Override protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D)g; field2 = new JTextField("22222222222222222222") { @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); }} **解説 [#p23f641d] 上記のサンプルでは、それぞれアルファ値を使った背景色をJTextFieldに設定しています。 * 解説 [#explanation] 上記のサンプルでは、それぞれアルファ値を使った半透明の背景色を`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]] -下(field2) --setOpaque(false) とし、paintComponentをオーバーライドして、背景色を描画している - `0`: `setOpaque(true)` -- 文字列を選択するとキャレットの点滅などの再描画で残像が表示されてしまう -- `NimbusLookAndFeel`では発生しない - `1`: `setOpaque(false)` -- `setOpaque(false)`とすると背景色は描画されない -- `NimbusLookAndFeel`では背景色が描画される --- 参考: [http://weblogs.java.net/blog/ljnelson/archive/2008/07/nimbus_and_opac.html Laird Nelson's Blog: Nimbus and Opacity] - `2`: `1 + paintComponent` -- `setOpaque(false)`を設定、かつ`paintComponent(...)`メソッドをオーバーライドして背景色を描画 ---- - Nimbus L&F (build 1.6.0_10-rc-b28) でのスクリーンショット - `NimbusLookAndFeel`でのスクリーンショット #screenshot(,screenshot1.png) #ref(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQcFKxPuBpI/AAAAAAAAAqw/1P6cGhtr7FA/s800/TranslucentTextField1.png) -GTK L&F でのスクリーンショット - `GTKLookAndFeel`でのスクリーンショット -- [https://bugs.openjdk.org/browse/JDK-6531760 Bug ID: 6531760 JTextField not honoring the background color] #screenshot(,screenshot2.png) #ref(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTV55zD1gI/AAAAAAAAAoY/0PCTmGDb2AA/s800/TranslucentTextField2.png) **参考リンク [#s707327e] -[[江戸の文様(和風素材・デスクトップ壁紙)>http://www.viva-edo.com/komon/edokomon.html]] --名物裂から雲鶴を壁紙として拝借しています。 * 参考リンク [#reference] - [http://www.viva-edo.com/komon/edokomon.html 江戸の文様(和風素材・デスクトップ壁紙)] -- 背景画像として名物裂から雲鶴を借用 - [https://tips4java.wordpress.com/2009/05/31/backgrounds-with-transparency/ Backgrounds With Transparency « Java Tips Weblog] **コメント [#l25f2c0b] * コメント [#comment] #comment #comment