2017-07-31 11 views
0

半透明の背景(アルファ値が120の黒い背景)のJTextFieldを作成しようとしています。現在のコードはJTextFieldを半透明にする方法

public static void designTextField(final JTextField tf) { 
     tf.setBorder(null); 
     tf.setFont(new Font("Comfortaa", Font.PLAIN, 30)); 

     tf.setBackground(new Color(0, 0, 0, 120)); 
     tf.setForeground(new Color(200, 200, 200, 200)); 
} 

ですが、これは動作していないようです。テキストが入力されていない

:ここでこのコードの結果が(2つのテキストフィールドがあります)写真をある

No text entered

テキストを入力:

Text entered

として、いくつかの奇妙な描画バグがあり、両方のテキストフィールドが完全に不透明であるように見えます。これをどうすれば解決できますか?

+1

スイングコンポーネントは、通常、透過性ではうまく機能しません。 https://tips4java.wordpress.com/2009/05/31/backgrounds-with-transparency/ – Ansharja

答えて

0

スイングは完全に透明で動作します。説明:あなたはちょうど

tf.setOpaque(false); 

https://docs.oracle.com/javase/tutorial/uiswing/painting/problems.html セクション「ビジュアルアーティファクトが私のGUIに表示される問題は、」追加する必要があります。

+0

私はすでにこれを試したところ、完全に白くなっているテキストフィールド、つまりhttps:// scという結果になりました。 reflex.rip/PHcyfX.png – HopeIsNope

+0

半透明のテキストフィールドの背景を追加するには、さらに、コンポーネントの描画方法をオーバーライドする必要があります: 'JTextField tf = new JTextField(){ @Override protected void paintComponent(Graphics g){ g .setColor(new Color(0、0、0、100)); g.fillRect(getX()、getY()、getWidth()、getHeight()); super.paintComponent(g); } }; ' –

関連する問題