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 使用

jna 使用_使用JNA的透明JFrame相关推荐

  1. jna 构造函数_【JNA探索之路系列】之二:JNA API

    工欲善其事,必先利其器,本篇文章就来详细探讨在JNA开源项目的工程中提供了哪些应用接口,它们分别提供了怎样的功能. JNA4.1.0的包结构如下所示: com.sun.jna com.sun.jna. ...

  2. 使用JNA的透明JFrame

    在" 使JFrame透明"中,我展示了一种使用AWTUtilities类使框架透明的方法. 但是使用该类会导致访问限制编译时错误,该文章中还显示了Eclipse中的解析. 现在,这 ...

  3. java jna 数据结构_开源框架JNA的使用

    Java开发过程中,有时候会需要和C,C++等交互,这时候我们就想起了经典技术JNI,但是JNI的使用过程十分繁琐,而且容易出现各种问题,还得封装而且问题不好定位.假如我们有一个.so文件,如果使用J ...

  4. java jna 视频,java之JNA

    jna下载.PNG jna-platform pom.xml net.java.dev.jna jna-platform 如果直接引用jna-platform-5.6.0.jar,则可以直接使用本地类 ...

  5. led灯条维修_常见的LED透明屏型号规格,影响LED透明屏价格因素

    LED 透明屏具有高通透.轻薄特点.LED透明屏型号规格有哪些,影响LED透明屏价格因素以下分享给大家: 透明 LED 显示屏型号 如可以看到 LED 透明屏规格如下: 由上表来分析: 1. 比如取幕 ...

  6. java 叉号关闭_求助 java 如何编写JFrame窗体右上角红色打叉关闭按钮的事件?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; impo ...

  7. tde数据库加密_启用了基于透明数据加密(TDE)的地理复制的Azure SQL数据库

    tde数据库加密 In this article, we will review how to set up Geo-Replication on a Transparent Data Encrypt ...

  8. 为什么存png还有白色底_用photoshop保存透明背景的图片为png格式,为什么打开后是白色背景了?...

    Photoshop想要保存透2113明背景的图片要保存PNG格式,保存JPG格式就5261会变成图片.41021.电脑打开Photoshop.2.打1653开Photoshop后,打开一张图片.3.打 ...

  9. python png 背景透明_去除白色背景得到透明背景png的示例代码

    [实例简介] 去除图像中的白色背景,得到透明背景的保留主体的png图像的python代码: [实例截图] 原图 去除白色背景后得到的图片 [核心代码] def remove_white_bg(img_ ...

最新文章

  1. 怎样才可以过大学英语六级啊,有没有好点的方法?【转载】
  2. 计算机用户账户添加,windows添加用户账户
  3. java ee 3.0_初识JavaEE 6 的 Servlet3.0
  4. Linux shell 基础语法
  5. 中移M5310A NBIoT模组通信测试命令
  6. python虚拟环境 pyenv_Python多版本管理和虚拟环境维护(pyenv, pyenv-virtualenv)
  7. pyqt一个text实时显示另一个text的内容_python:基于tkinter打造的股票实时监控声音报警器! 自动监控,声音警报...
  8. 固定资产中计算机软件类型,国税局固定资产的分类
  9. matlab建模总结,数学建模方法自己归纳总结(建模参考用,包含相应例题以及MATLAB...
  10. 火狐受信任站点设置_火狐浏览器如何添加信任站点?添加信任站点的方法说明...
  11. B. Neko Performs Cat Furrier Transform---异或的性质运用--Codeforces Round #554 (Div. 2)
  12. 基于STM32F429动态信号测试分析系统
  13. 网页使用中文字体的两种解决方案
  14. (环境搭建+复现)CVE-2020-1472 NetLogon 域内提权漏洞
  15. java 代码审查_代码审查(Code Review)清单
  16. ubuntu 18.04 安装
  17. 计算机中丢失krpt怎么办,计算机中丢失krpt。dll怎么办
  18. Vue.js 教程---菜鸟教程
  19. Unity学习笔记--Extension Method 扩展方法
  20. 用户界面设计黄金三原则

热门文章

  1. 这是什么操作?java中的变量竟然可以先使用后声明?
  2. 2015蓝桥杯省赛---java---C---3(无穷分数)
  3. 集合中重写equals方法删除new的对象
  4. ES报错:Connection reset by peer 解决经历
  5. 数据库主从和主备部署介绍
  6. java日志——基本日志+高级日志
  7. 会话技术Session
  8. Springboot(十):邮件服务
  9. wxpay-api:pay_J2Pay – API响应
  10. pivotal_Spring Data Pivotal Gemfire教程