相信读者在使用腾讯QQ时会发现,它的窗体是可以改变透明度的,虽然腾讯QQ采用.NET技术,
但是JAVA同样可以做出一样的效果。
今天在浏览API时偶然看到一个类AWTUtilities,就拿来用用,发现效果非常不错
下面具体看看Swing的透明窗体
直接写代码了:(我们用一个滑竿组件来控制透明度)
代码如下:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class text
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
final JFrame frame = new JFrame("透明窗体"); //定义标准窗体
JSlider jSlider = new JSlider(JSlider.HORIZONTAL, 0, 100, 100);//定义滑竿,
//初始值为100%(完全不透明)
jSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ce) {
float alpha = ((float) ((JSlider) ce.getSource()).getValue()) / 100;//读取滑竿百分比
// 改变图像的透明度
com.sun.awt.AWTUtilities.setWindowOpacity(frame, alpha);
frame.repaint();
}
});
frame.add(jSlider,BorderLayout.SOUTH);
frame.setSize(400,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
com.sun.awt.AWTUtilities.setWindowOpacity(frame, 1f);//初始化透明度100%
}
});
}
}
运行结果如下:
初始化:
移动滑竿改变透明度:
很炫吧!
如果读者能做出更炫酷的窗体,请提出来,互相交流,谢谢!!