使用JNA的透明JFrame
什么是Java本机访问(JNA) ?
JNA使Java程序可以轻松访问本机共享库(Windows上的DLL),而无需编写Java代码-无需JNI或本机代码。JNA允许您使用自然Java方法调用直接调用本机函数。
编码
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;import com.sun.jna.platform.WindowUtils;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle('Transparent Frame');setSize(400,400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JSlider slider = new JSlider(JSlider.HORIZONTAL, 30, 100, 100);slider.addChangeListener(new ChangeListener() {@Overridepublic void stateChanged(ChangeEvent e) {JSlider slider = (JSlider) e.getSource();if(!slider.getValueIsAdjusting()){WindowUtils.setWindowAlpha(TransparentFrame.this, slider.getValue()/100f);}}});add(slider);setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {new TransparentFrame();}});}
}
JNA jar(platform.jar)中提供了WindowUtils类。 WindowUtils类的方法setWindowAlpha 用于使窗口透明。 此方法的第一个参数是您的框架/窗口,第二个参数是alpha值。 此类还具有一个称为setWindowTransparent的方法,该方法还可用于使窗口透明。
依存关系
您将需要以下2个jar运行该程序:(两个jar文件都可以从GitHub上的JNA下载)。
- jna.jar
- platform.jar
要在Windows上运行以上代码,您需要在调用WindowUtils函数之前设置“ sun.java2d.noddraw”系统属性。
System.setProperty('sun.java2d.noddraw', 'true');
输出量
补充笔记
我已经在以下机器上测试了此代码:
- Windows XP Service Pack 3(32位)
- Windows 7(32位)
- Cent OS 5(32位)
如果您在其他计算机上对其进行测试,或者具有使用JNA的其他计算机代码以实现相同功能,则可以随时将其作为对此文章的评论进行共享。
祝您编程愉快,别忘了分享!
参考: harryjoy博客上使用我们JCG合作伙伴 Harsh Raval的JNA使用的透明JFrame 。
翻译自: https://www.javacodegeeks.com/2012/09/transparent-jframe-using-jna.html
使用JNA的透明JFrame相关推荐
- jna 使用_使用JNA的透明JFrame
jna 使用 在使JFrame透明中,我展示了一种使用AWTUtilities类使框架透明的方法. 但是使用该类会导致访问限制编译时错误,该文章中还显示了Eclipse中的解析. 现在,这里是使用Ja ...
- Java、JFrame制作录制GIF小工具
和截屏工具类似,选取一块区域截图保存成图片,gif录制就是选取一块区域持续录制,最后保存成gif动画图片. 运行效果 1.选取需要录制的区域(鼠标拖拽选择录制的区域) 2.点击开始按钮开始录制GIF图 ...
- Java--实现简单的音频(mp3格式)播放
本文实例为大家分享了实现Java程序中播放mp3格式的音频代码,供大家参考,具体内容如下: 1 内容说明 (1)开发前,需引入一个jlayer-1.0.1.jar包 提取码:2317 (2)构建路径 ...
- 桌宠——自用笔记,简单制作系统托盘
package shemje;import javax.swing.*; import java.awt.*;public class shemje {public static void main( ...
- jframe透明_使JFrame透明
jframe透明 首先创建一个带有滑块的框架,该滑块将用于设置透明度量. import javax.swing.JFrame; import javax.swing.JSlider;public cl ...
- java 透明对话框_java实现jframe透明窗体示例
java实现jframe透明窗体示例 复制代码 代码如下: import javax.swing.JFrame; public class TansluFrame extends JFrame { p ...
- Swing透明和变换
以前或许大家对一个UI组件是否透明没有那么关心,但是自从Vista的毛玻璃出现后,UI透明就成了大家非常关注的一个话题,于是Java阵营开始了铺天盖地的讨论如何实现透明的效果,但是很不幸的是无论组件如 ...
- JFrame windowbuiler的使用基础
一.通过windowbuilder创建java项目: New --Other--windowbuilder--SWT Designer --SWT/JFace Java Project 二.创建文件 ...
- 2、Java Swing JFrame和JPanel:窗口容器和面板容器
在 Swing 中,任何其他组件都必须位于一个顶层容器中. JFrame 窗口和 JPanel 面板是常用的顶层容器,本节详细介绍这两个容器的使用方法. JFrame 窗口 JFrame 用来设计类似 ...
最新文章
- c语言程序设计编辑与调试环境实验报告,01程序设计基础实验报告_C语言程序设计基础.doc...
- innerText与innerHTML的区别
- mapreduce工作流程_详解MapReduce中的五大编程模型
- 速读训练软件_记忆力训练:如何提高注意力呢?
- mysql 查询优化 Explain关键字 高性能mysql笔记
- scipy和statsmodels处理回归
- C#实验——Problem Statement
- 微软 rms服务器端,微软RMS服务器部署之准备篇
- win10 休眠设置无效_睡眠模式在Windows 10系统上不起作用?
- 微信公众号开发模式几点介绍
- 怎么学好html5和css3,如何提高你的CSS水平
- AFEPack 使用 Tutorial(三):解三维泊松方程
- 小黑公司团建吃烤肉肉啦,mac m1死活安装不上hbase,用拯救者一下就安上啦的leetcode之旅:865. 具有所有最深节点的最小子树
- 2、股权融资 - 打造企业上市系列文章
- java格式化时间间隔_用Java本地化格式化时间间隔
- 【QT】回调函数的实现
- java判断单元格是否是日期_Excel单元格,日期/时间返回Int而不是日期/时间字符串...
- python产品发布会_阅读虫师django开发发布会系统以及django开发Web接口分享
- 【MPU6050能读ID 但读数据值为零(一个硬件问题)】
- pdf.js批注_使用反射处理Java批注
热门文章
- org.apache.kafka.common.errors.TimeoutException: Topic not present in metadata 解决方法
- 转: 虚拟IP(VIP)原理
- spring(1)Spring之旅
- IDEA集成maven流程图详细介绍
- junit junit_穿越JUnit流
- apache.camel_Apache Camel 2.23发布
- ibm liberty_使用Eclipse和Open Liberty的Java EE 8上的Java 9
- javafx_JavaFX在这里留下来!
- jvm高并发_JVM上的高并发HTTP客户端
- win7 activemq_带有骆驼,ActiveMQ,Elasticsearch的关键HL7用例