在“ 使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的透明JFrame相关推荐

  1. jna 使用_使用JNA的透明JFrame

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

  2. Java、JFrame制作录制GIF小工具

    和截屏工具类似,选取一块区域截图保存成图片,gif录制就是选取一块区域持续录制,最后保存成gif动画图片. 运行效果 1.选取需要录制的区域(鼠标拖拽选择录制的区域) 2.点击开始按钮开始录制GIF图 ...

  3. Java--实现简单的音频(mp3格式)播放

    本文实例为大家分享了实现Java程序中播放mp3格式的音频代码,供大家参考,具体内容如下: 1 内容说明 (1)开发前,需引入一个jlayer-1.0.1.jar包 提取码:2317 (2)构建路径 ...

  4. 桌宠——自用笔记,简单制作系统托盘

    package shemje;import javax.swing.*; import java.awt.*;public class shemje {public static void main( ...

  5. jframe透明_使JFrame透明

    jframe透明 首先创建一个带有滑块的框架,该滑块将用于设置透明度量. import javax.swing.JFrame; import javax.swing.JSlider;public cl ...

  6. java 透明对话框_java实现jframe透明窗体示例

    java实现jframe透明窗体示例 复制代码 代码如下: import javax.swing.JFrame; public class TansluFrame extends JFrame { p ...

  7. Swing透明和变换

    以前或许大家对一个UI组件是否透明没有那么关心,但是自从Vista的毛玻璃出现后,UI透明就成了大家非常关注的一个话题,于是Java阵营开始了铺天盖地的讨论如何实现透明的效果,但是很不幸的是无论组件如 ...

  8. JFrame windowbuiler的使用基础

    一.通过windowbuilder创建java项目: New --Other--windowbuilder--SWT Designer --SWT/JFace Java Project 二.创建文件 ...

  9. 2、Java Swing JFrame和JPanel:窗口容器和面板容器

    在 Swing 中,任何其他组件都必须位于一个顶层容器中. JFrame 窗口和 JPanel 面板是常用的顶层容器,本节详细介绍这两个容器的使用方法. JFrame 窗口 JFrame 用来设计类似 ...

最新文章

  1. c语言程序设计编辑与调试环境实验报告,01程序设计基础实验报告_C语言程序设计基础.doc...
  2. innerText与innerHTML的区别
  3. mapreduce工作流程_详解MapReduce中的五大编程模型
  4. 速读训练软件_记忆力训练:如何提高注意力呢?
  5. mysql 查询优化 Explain关键字 高性能mysql笔记
  6. scipy和statsmodels处理回归
  7. C#实验——Problem Statement
  8. 微软 rms服务器端,微软RMS服务器部署之准备篇
  9. win10 休眠设置无效_睡眠模式在Windows 10系统上不起作用?
  10. 微信公众号开发模式几点介绍
  11. 怎么学好html5和css3,如何提高你的CSS水平
  12. AFEPack 使用 Tutorial(三):解三维泊松方程
  13. 小黑公司团建吃烤肉肉啦,mac m1死活安装不上hbase,用拯救者一下就安上啦的leetcode之旅:865. 具有所有最深节点的最小子树
  14. 2、股权融资 - 打造企业上市系列文章
  15. java格式化时间间隔_用Java本地化格式化时间间隔
  16. 【QT】回调函数的实现
  17. java判断单元格是否是日期_Excel单元格,日期/时间返回Int而不是日期/时间字符串...
  18. python产品发布会_阅读虫师django开发发布会系统以及django开发Web接口分享
  19. 【MPU6050能读ID 但读数据值为零(一个硬件问题)】
  20. pdf.js批注_使用反射处理Java批注

热门文章

  1. org.apache.kafka.common.errors.TimeoutException: Topic not present in metadata 解决方法
  2. 转: 虚拟IP(VIP)原理
  3. spring(1)Spring之旅
  4. IDEA集成maven流程图详细介绍
  5. junit junit_穿越JUnit流
  6. apache.camel_Apache Camel 2.23发布
  7. ibm liberty_使用Eclipse和Open Liberty的Java EE 8上的Java 9
  8. javafx_JavaFX在这里留下来!
  9. jvm高并发_JVM上的高并发HTTP客户端
  10. win7 activemq_带有骆驼,ActiveMQ,Elasticsearch的关键HL7用例