私はGraphics2D
オブジェクトとオブジェクトの背景を設定したい。 Colorパラメータを持つsetBackground
メソッドがあります。このようにして、背景の色を設定できます。
私の質問は、どのようにオブジェクトの背景の透明度を設定できますか?どういうわけか完全に透明であると言うことができますか?どういうわけか完全に不透明であると言うことができますか? 0.8の透明度/不透明度を持つようになんとかできますか?これらの値を設定するにはどうすればよいですか?
TRANSLUCENT
およびOPAQUE
と呼ばれるint定義済みの値があることを見てきましたが、どのように使用できるのかわかりません。
たぶん正しい使い方は、intパラメータでColorのコンストラクタを呼び出すことですか?
透明度を指定して、Colorオブジェクトを構築できます。たとえば、次のコードは50%の透明度を持つREDカラーを構築します
Color c=new Color(1f,0f,0f,.5f );
次の方法でColorのコンストラクターを呼び出すことができます。
Color c = new Color(r,g,b,a);
ここで、aはアルファ(透明度)値です。
すべてのJavaクラスと同様に、この情報は公式APIにあります。 http://docs.Oracle.com/javase/7/docs/api/Java/awt /Color.html
これは非常に優れたリソースであり、ここで回答を待つのを避けることができます。
jPanel1.setBackground(new Color(0,0,0,200));
/*This will put a transparent black color on a panel, the important part of the code is: .setBackground(new Color(0,0,0,200));*/
Javaは実際にこの点で非常に優れており、透明性などを実現できます。 Oracleの単純な透明ウィンドウI コピー のコードを次に示します。
package misc;
import Java.awt.*;
import javax.swing.*;
import static Java.awt.GraphicsDevice.WindowTranslucency.*;
public class TranslucentWindowDemo extends JFrame {
public TranslucentWindowDemo() {
super("TranslucentWindow");
setLayout(new GridBagLayout());
setSize(300,200);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Add a sample button.
add(new JButton("I am a Button"));
}
public static void main(String[] args) {
// Determine if the GraphicsDevice supports translucency.
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice Gd = ge.getDefaultScreenDevice();
//If translucent windows aren't supported, exit.
if (!Gd.isWindowTranslucencySupported(TRANSLUCENT)) {
System.err.println(
"Translucency is not supported");
System.exit(0);
}
JFrame.setDefaultLookAndFeelDecorated(true);
// Create the GUI on the event-dispatching thread
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
TranslucentWindowDemo tw = new TranslucentWindowDemo();
// Set the window to 55% opaque (45% translucent).
tw.setOpacity(0.55f);
// Display the window.
tw.setVisible(true);
}
});
}
}
詳細については、 here を参照してください。
JPanelを使用している場合は、これを試すことができます。jPanel1.setOpaque(false);