下面是我用來使內容窗格透明的代碼。我不明白的是如果我註釋掉該行「setBackground(new Color(0,0,0,0));」我的窗口只是用漸變色和不透明的顏色繪製的。但是使用上面的代碼行使它透明。難以理解我用來使JFrame的內容窗格透明的代碼
任何人都可以告訴這個「setBackground(new Color(0,0,0,0));」和我爲JPanel設置的漸變顏色之間的關係是什麼。 Thanx提前。
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsDevice;
import java.awt.GraphicsDevice.WindowTranslucency;
import java.awt.GraphicsEnvironment;
import java.awt.Paint;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class transparent extends JFrame {
public transparent() {
super("Transparent Window");
setBackground(new Color(0,0,0,0));//problem with this line
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,200);
getContentPane().setLayout(new FlowLayout());
JPanel jp=new JPanel(){
public void paintComponent(Graphics g)
{
//super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
Paint gp=new GradientPaint(300, 700, new Color(20,20,210,0), 100, 00, new Color(10,20,40,255));
g2.setPaint(gp);
g2.fillRect(0, 0, getWidth(),getHeight());
}
};
setContentPane(jp);
JButton jbtn=new JButton("Enter");
add(jbtn);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable(){public void run(){new transparent();}});
}
}
Thanx Donal爲您的答覆。但我不能通過將透明漸變顏色添加到JPanel然後將其設置爲JFrame的內容窗格來完成。 – 2012-08-07 10:41:49
我想問題是,如果你只向JPanel添加透明度,那麼你會看穿JPanel,只能看到底層框架!通過使框架完全透明,當你透過面板看到的時候,你還會看到框架 – olagjo 2012-08-07 10:47:06
:我認爲你說得對。任何人都可以確認它,或者添加一個具體的答案。 – 2012-08-07 10:50:40