2015-11-01 40 views
1

我使用java工作,我想製作一個半透明的窗口(如80%alpha的黑色)。我的代碼的基礎是那些在以下帖子:How to make a transparent JFrame but keep everything else the same?如何在Java swing中創建transluent窗口?

問題是,當我運行我的程序,窗口是半透明的,但你可能會看到下面的圖片,背景顏色(洋紅色)只出現在文字,而不是白紙。 enter image description here 更糟糕的是,當我選擇透明度爲Color(0,0,0,125)的黑色作爲繪圖顏色時,屏幕上不顯示任何內容。

這是我到目前爲止有:

public class DssWindow extends JFrame 
{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 2455172975892566000L; 

    /** 
    * 
    */ 
    public DssWindow() 
    { 
     super("My frame"); 

     setUndecorated(true); 
     setBackground(new Color(0,0,0,0)); 
     setAlwaysOnTop(true); 
     JPanel contentPane = new JPanel() 
     { 
      @Override 
      public void paintComponent(Graphics g) 
      { 
       super.paintComponent(g); 
       if(!(g instanceof Graphics2D)) 
       { 
        return; 
       } 
       Graphics2D gr = (Graphics2D)g.create(); 
       gr.setColor(new Color(255,0,255,200)); 
       gr.fillRect(0, 0, getWidth(), getHeight()); 
      } 
     }; 
     contentPane.setOpaque(false); 
     Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); 
     contentPane.setPreferredSize(new Dimension(screen.width,screen.height)); 
     setContentPane(contentPane); 
     pack(); 
    } 
} 

難道有人知道/有什麼問題的線索? 我正在Linux上工作(可能這是答案的一部分)。

謝謝。

+0

可能的重複[如何使一個透明的JFrame,但保持其他一切?](http://stackoverflow.com/questions/14927980/how-to-make-a-transparent-jframe-but-keep-一切 - 其他 - 相同) –

+0

這不是重複的。我用這個帖子來製作我的節目。這是我的另一個問題。 – dooxe

回答