浏览 3007 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-18
最后修改:2009-04-18
自Windows的透明技术出现以后,它的漂亮的外观一直为很多程序员所爱.目前jdk 6 u 10已经把透明这块相应的包加进来了,需要的程序员可以去下载了.这里就介绍下怎么使用JNA实现透明.先看下面的代码吧:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.lgh.lucency; import com.lgh.pic.Pic; import com.sun.jna.examples.WindowUtils; import java.awt.BorderLayout; import java.awt.Graphics; import java.awt.Polygon; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.ToolTipManager; /** * * @author lgh */ public class LucencyTest2 { public LucencyTest2() { this.initJFrame(); } public static void main(String[] args) { ToolTipManager.sharedInstance().setInitialDelay(0); ToolTipManager.sharedInstance().setLightWeightPopupEnabled(true); new LucencyTest2(); } private void initJFrame() { final JFrame jf = new JFrame("透明"); jf.setUndecorated(true); jf.setSize(400, 300); jf.setLayout(new BorderLayout()); JPanel jp = new JPanel() { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(Pic.statResult, 0, 0, jf); } }; // jp.setToolTipText("<html><center><font color=blue size=+2>" + // "ToolTipDemo.moo" + "</font></center></html>"); // jp.setToolTipText("<html><center><font face=AvantGarde size=+1 color=white>" + // ("ToolTipDemo.got_milk") + "</font></center></html>"); jf.add(jp, BorderLayout.CENTER); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setLocationRelativeTo(null); //移动 MouseMotionUtil mmu = new MouseMotionUtil(); mmu.addMouseMotionListener(jf, jp); //透明 //1.根据图片来透明 // WindowUtils.setWindowAlpha(jf, 0.01F); // WindowUtils.setWindowMask(jf, new ImageIcon(Pic.statResult)); //2.根据shape外观来进行做形状 //2.1简单的圆 // RoundRectangle2D.Float mask = new RoundRectangle2D.Float(0, 0, jf.getWidth(),jf.getHeight(), 100, 100); // WindowUtils.setWindowMask(jf, mask); //2.2另一种不规则外形 Polygon polygon = new Polygon(); polygon.addPoint(200, 300); polygon.addPoint(400, 0); polygon.addPoint(0, 0); WindowUtils.setWindowMask(jf, polygon); jf.setVisible(true); } } 根据图片透明的效果如下: 根据四边形透明的如下: 根据三角形的透明的效果如下:
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |