swing中Jpanel设置透明度

来源:互联网 发布:mod达人邢凯淘宝店 编辑:程序博客网 时间:2024/05/22 04:58


课题研究中应用到要生成透明背景的电子签章,所以通过网上搜寻资料以及自己整合最终实现了这项功能。实现图如下:



关键代码如下:

1.在生成panel时,设置为透明

      DrawPanel panel = new DrawPanel(); //DrawPanel继承swing中的Panel,具体实现不影响最后的结果
      panel.setBackground(Color.WHITE);     //先加个背景颜色
      panel.setOpaque(false); //把panel的背景色设为透明

一般这样设置后,会默认去除原来panel的背景色(如白色),但是在生成为图片得时候,会把背景补为灰色(可能是默认的背景色),所以没有达到效果。

       2.在上述步骤之上,再借助一个AWTUtilities类(自己下载好jar包),就可以实现上述功能了

DrawFrame frame = new DrawFrame(); //DrawFrame继承swing中的Frame,具体实现不影响最后的结果
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setUndecorated(true); // 设置窗口
无标题
com.sun.awt.AWTUtilities.setWindowOpaque(frame, false);// 设置窗体透明
//com.sun.awt.AWTUtilities.setWindowOpacity(frame, 0.3f);//
或者也可以自定义设置整个窗体的透明度(上一行代码等价于第二个参数设置为0f的情况)
      frame.setVisible(true);


上述代码即可实现panel的背景透明,保存后的图片也是透明的,遇到问题后可以向我询问

0 0