2015-11-01 42 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

回答