自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);
}
}
根据图片透明的效果如下:
根据四边形透明的如下:
根据三角形的透明的效果如下:
- 大小: 68.6 KB
- 大小: 77 KB
- 大小: 84.9 KB
分享到:
相关推荐
jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip jna 实现回调函数 code.zip
在此编了一个利用jna在java平台下调用c语言动态链接库的例子,c++代码也已经提供,java代码已经调试通过。
JAVA 利用JNA调用C程序32位或者64位dll 实例,直接解压运行。
JNA调用C/C++简单demo,包含文档及简单Demo,基本使用的都包含
android 实现jna的所有东西.简单易懂.
JNA提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java...
Java实现获取窗口句柄并操作窗口 JNA Java实现获取窗口句柄并操作窗口 JNA
jna和examples的jar包,主要用于JFrame透明、不规则形状的JFrame
MyEclipse 6.5 导入就可测试 绝对能跑起来 实现 java 通过 jna 包 调用dll
* 或者WindowUtils.setWindowMask(window, icon)就可以了,但是要注意一点必须设置System.setProperty("sun.java2d.noddraw", "true"),否则JNA会告诉你这个程序不支持透明。当然要运行起来,还得需要 * 两个Jar...
这几天搞搞JNA,主要是组内小弟靠不住。 找了下资料,居然没有回调函数的样例,郁闷的我不行,于是就自己折腾一晚上,自己实现一个。 C++部分使用ACE实现了一个线程,线程中调用Java部分的回调函数。 C++使用vc8...
JNA实例=======================================================JNA实例
jna和examples的jar包,主要用于JFrame透明、不规则形状的JFrame,挺难找的jar包,免费分享
描述jna实现dll调用的文档,替换原有JNI方式
·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件...
JNA-5.7.0 jna-platform-5.7.0
2021 最新JNA jar包,jna-5.9.0
JNA的API文档
开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射,大大降低了Java调用本体共享库的开发难度。JNA与.NET平台上的P/Invoke机制一样简单和方便。