jna 使用_使用JNA的透明JFrame

jna 使用

在使JFrame透明中,我展示了一种使用AWTUtilities类使框架透明的方法。 但是使用该类会导致访问限制编译时错误,该文章中还显示了Eclipse中的解析。 现在,这里是使用Java本机的版本。 我使用Java本机访问(JNA)库来调用本机函数来完成任务。

什么是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 使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过命令查看linux 密码,linux查看用户密码(linux查看用户密码命令)

linux查看用户密码(linux查看用户密码命令)2020-05-15 13:18:30共10个回答1、用户名和密码的存储位置存储帐号的文件:/etc/passwd存储密码的文件:/etc/shadow2、可以使用cat、more、head、tail以及vim等命令查看或者修改,如下图所示:比如要查找系统中admin普通用户的密码,则执行…

命名规范参考

转载于:https://www.cnblogs.com/jy13638593346/p/9575481.html

Guavate:桥接Guava和Java8的微型库

Java8很棒,并向JDK添加了一些有用的抽象,这些抽象通过Google出色的Guava commons库在Java社区中得到了普及。 小组讨论表明, 不久将有一个需要Java 8的Guava版本,从而弥合了Guava和Java8之间的鸿沟。 但是,直到这样的时…

常见的几种异常类型-熟记

今天把几个常见的异常总结一下,希望自己能熟记,别忘记!!! 1.NullPointerException: 空指针异常。经验发现这个异常是经常会发生的,属于运行时异常。 举例: public static void main(String[] ar…

linux不重启更新内核,编译并使用kpath不重启更新linux-kernel

yum install ncurses-devel -ytar -xvf linux-4.9.3.tar.xzcd linux-4.9.3/make menuconfigmake allmake modules_installmake installKpatch主要有四个组件。kpatch-build 产生hot patch。 通过对比包含patch和不包含patch的kernel差异,产生…

The type sun.management.ManagementFactory is not visible

Eclipse默认将这些受访问限制的API设成了Error。 解决方法: 只要将Windows---Preferences---Java--Complicer---Errors/Warings里面的Deprecated and restricted API中的Forbidden references(access rules) 选为Waring就可以编译过了 今天在JDK1.7中引入sun.manage…

简单选项卡

简单选项卡 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Document</title><style>#div1 {width: 350px;margin: 0 auto;}#div1 button{width: 100px; height: 30px; background-color: …

探索应用程序的指路明灯:Route 和 Router 入门指南(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Linux密码是一个回文,usermod命令和用户密码管理

3.4 usermod命令3.5 用户密码管理3.6 mkpasswd命令3.4 usermod命令在某些情况下需要改变现的用户的属性&#xff0c;改变用户的home目录、登录名、密码、登录shell&#xff0c;截止日期等&#xff0c;在这种情况下“usermod命令被使用。实例如下&#xff1a;#格式如下&#xff…

php cdi_配置CDI对话的超时

php cdi在开发JSF应用程序时&#xff0c;CDI对话范围是一个很好的功能。 想象一下&#xff0c;您有大型数据表&#xff0c;需要很长时间才能加载。 由于高内存消耗&#xff0c;您通常不希望将加载的数据放置在会话作用域的Bean中。 而且&#xff0c;您不能将加载的数据放在视图…

org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx

org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuExc.jsp at line 163这两句话表示创建一个新的文件失败。所以可能是当前用户没有文件路径的访问权限&#xff0c;也有可能是文件路径错误等其他关于文件路径的问题

解决在html中引入font-awesome的css文件后, 图标显示不出来

今天小颖在做项目时&#xff0c;需要在html文件中引入font-awesome.min.css&#xff0c;但是引入后&#xff1a; 以前小颖在用font-awesome库里的图标时&#xff0c;都是直接从node中下包&#xff0c;然后在main.js中引入得即可&#xff0c;第一次直接在html中直接引入css文件&…

linux 提供多用户telnet,linux系统telnet命令怎么用

2016-10-24 回答telnet命令通常用来远程登录。telnet程序是基于telnet协议的远程登录客户端程序。telnet协议是tcp/ip协议族中的一员&#xff0c;是internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用…

Stackoverflow:您从未见过的7个最佳Java答案

您可以在Stackoverflow上找到哪些最有趣的答案&#xff1f; Stackoverflow是开发人员的金矿。 它可以帮助我们找到遇到的特定问题的最有用答案&#xff0c;并且我们总是从中学习新事物。 对于以下文章&#xff0c;我们研究了最流行的Java问题和答案&#xff0c;并决定重点介绍…

WORD中如何自动生成目录?

步骤&#xff1a; 1、输入当做标题的文字 2、将文字设置为标题样式 3、光标放在要添加目录的位置 4、选择插入->引用->索引和目录->目录->确定

C#控件之Repeater控件使用

歡迎大家來討論&#xff0c;修改&#xff0c;一定虛心接受。 1.為什麼使用Repeater控件&#xff1f; 關於把從數據庫讀取的數據綁定到前台頁面&#xff0c;我們可以使用DataGrid、DataGridView以及Repeater來佈局&#xff0c;三者均可以直接綁定DataTable中的字段&#xff0c;但…

linux驱动静态分配内存,Linux驱动设计——内存与IO访问

名词解释内存空间与IO空间内存空间是计算机系统里面非系统内存区域的地址空间&#xff0c;现在的通用X86体系提供32位地址&#xff0c;寻址4G字节的内存空间&#xff0c;但一般的计算机只安装256M字节或者更少的内存&#xff0c;剩下的高位内存就被用于PCI或者AGP及系统桥设备的…

Windows Socket 编程_ 简单的服务器/客户端程序

一。程序运行效果图二。程序源代码 三。程序设计相关基础知识 1.计算机网络 2.IP地址 3.协议 4.网络体系结构 5.TCP/IP体系结构与特点 6.客户机/服务器模式 7.TCP/IP特点 8.套接字的引入 9.面向 连接/无连接 的套接字的系统调用时序图/流程图 …

JDK / JRE zip

Server JRE与JRE的区别&#xff1a;Server JRE一般用于服务器上安装&#xff0c;只有64bit版本&#xff0c;不会安装浏览器插件、自动更新&#xff0c;有监视工具、没有Java Fx和其他开发工具&#xff1b;有安装程序&#xff0c;只是一压缩目录。Server JRE 8大约是完整JDK的40…