这几天我在写一个记事本程序,为了方便记事本记事,我准备将记事本界面透明化。于是上网查了一下资料。然后将透明化界面做了出来。

可是在做的过程中我还是遇到了一些小小的问题,所以就把它记录了下来。

问题1:奇怪的错误(访问限制:Access restriction)

透明化窗体中有这样一段代码:

// 判断系统是否支持窗体透明化
if (com.sun.awt.AWTUtilities.isWindowOpaque(this)) {// 设置窗体透明化, 透明参数值[0, 1](float类型)com.sun.awt.AWTUtilities.setWindowOpacty(this, 0.5f);
} else {JOptionPane.showMessageDialog(this, "系统不支持 JDK版本过低或JRE系统库缺损");
]

这段代码明明是没有错的,但是Eclipse却偏偏报了错,这是为什么呢?
通过错误提示,点击 “Configure problem severity” ,我发现了问题所在,原来是eclipse的配置问题。

解决方法如下:

菜单栏找到 Window -> Preferences -> Java Compiler(中间可能省略几步,你可以搜索) -> Errors/Warnings -> Deprecated and restricted API -> Forbidden reference(access rules) 后面的 Error 下拉改成 Warning 或者 Ignore -> 确定。
然后就 OK 了!

问题二:郁闷的异常(IllegalComponentStateException)

当我所有的代码都写完之后,一运行,结果出现了编译异常。当时我想把它抛出去,但是我又是遇到问题不能放的人。所以就找了一下原因。

Exception in thread "main" java.awt.IllegalComponentStateException: The frame is decorated
at java.awt.Frame.setOpacity(Unknown Source)
at java.awt.Window$1.setOpacity(Unknown Source)
at com.sun.awt.AWTUtilities.setWindowOpacity(Unknown Source)
at Opacity.<init>(Opacity.java:18)
at Opacity.main(Opacity.java:7)

最后我终于发现了错误的原因,原来是由于我写的窗体是可显示的所以抛出了这样一个异常。

之后我在我的源代码之上加了这么一句就好了。

this.setUndecorated(true);  // 禁用窗体装饰,加在前面就好了

关于这个函数我在 《JDK API 1.6.0中文版》查了一下,上面是这样说的。

/*setUndecorated
public void setUndecorated(boolean undecorated)禁用或启用此窗体的装饰。只有在窗体不可显示时才调用此方法。 参数:
undecorated - 如果没有启用窗体装饰,则为 true;如果启用了窗体装饰,则为 false。
抛出:
IllegalComponentStateException - 如果窗体是可显示的。
从以下版本开始:
1.4
另请参见:
isUndecorated(), Component.isDisplayable(), JFrame.setDefaultLookAndFeelDecorated(boolean)*/

测试源码:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;public class Opacity extends JFrame {public static void main(String[] args) {new Opacity();}Opacity() {this.setTitle("窗体透明化测试");JButton btn = new JButton();this.add(btn);double value = 0.4;// 判断是否支持透明度this.setUndecorated(true); // 禁用或启用此窗体的修饰。只有在窗体不可显示时//才调用此方法。if (com.sun.awt.AWTUtilities.isWindowOpaque(this)) {com.sun.awt.AWTUtilities.setWindowOpacity(this, (float)(1 - value));} else {JOptionPane.showMessageDialog(this, "系统不支持 JDK版本过低或 JRE 系统库缺损");}this.setBounds(400,400,400,300);this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);this.setVisible(true);}
}

Java 窗口透明化(无边框)相关推荐

  1. java 设置窗体 无边框 关闭按钮_求助 java 如何编写JFrame窗体右上角红色打叉关闭按钮的事件?...

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

  2. python 图标字体_Python+PyQt:使用图标字体打造无边框通用导航界面

    Python是一种面向对象的高级动态编程语言,相比于其它如C/C++语言,具有上手快.代码少.开发效率高的特点,Qt是跨平台的C++图形用户界面应用程序开发框架,是当前主流的GUI开发工具之一,其在P ...

  3. python小技巧大应用--基础实用漂亮界面(无边框,圆角,可拖拽)

    这回要实现一个漂亮的基础界面,要具有如下特色: 无边框,圆角,漂亮的背景,可拖拽移动,具有最小化,关闭按钮,界面与代码分离,支持qss 先展示一下最后的效果: 那就开始工作吧: 1.通过Qt Desi ...

  4. Electron无边框窗口(最小化、最大化、关闭、拖动)以及动态改变窗口大小

    文章目录 一.目标原型 1. 目标 2. 原型设计 3. 原型初步实现 二.无边框窗口 1. 要点 2. 改造 三.可拖拽区 1. 要点 2. 改造 四.最小化.最大化.关闭 1. 要点 2. 改造 ...

  5. 【最终版】PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化,添加内容窗口

    [最终版]PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化,添加内容窗口 文章目录 [最终版]PyQt5 自定义标题栏,实现无边框,最小化最大 ...

  6. PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化

    PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化 文章目录 PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变 ...

  7. 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法...

    在 GTK+/GNOME 3 环境下采用默认的 Adwaita 主题时,Java Swing 程序如果使用本地 GTK+ 主题会出现菜单无边框的 bug,这个问题也可能在其他常用的 GTK+ 主题中出 ...

  8. QT实现可移动和改变尺寸的无边框窗口

    2019独角兽企业重金招聘Python工程师标准>>> 实现QT无边框窗口的拖动,尺寸改变.需要的时候从该类继承,派生类需要定义为QWidget. 头文件: #ifndef SIZE ...

  9. C# WPF 建立无边框(标题栏)的登录窗口的示例

    前言:笔者最近用c#写WPF做了一个项目,此前未曾做过完整的WPF项目,算是一边学一边用,网上搜了不少资料,效率当然是不敢恭维的,有时会在一些很简单的问题上纠结很长时间,血与泪的教训可不少. 不过,正 ...

最新文章

  1. 自动驾驶之多传感器融合-硬件篇(毫米波雷达)
  2. 【设计模式】业务代表模式
  3. our reuse project in HCP
  4. spring mvc学习(2):spring jar包下载
  5. 让服务器突破性能极限 阿里云神龙论文入选计算机顶会ASPLOS
  6. 解决:vue文本识别 “ \n ” 的换行问题(完整案例说明)
  7. 关闭保护火狐浏览器的保护与多余的加载项
  8. 三星Galaxy Note系列年底停产:被折叠屏手机/Galaxy S系列取代
  9. MYSQL主从同步(Windows到Windows)
  10. 用 Java 实现人脸识别功能
  11. 对象不支持“attachEvent”属性或方法的解决办法
  12. 调用远程摄像头进行人脸识别_【论文精选】基于人脸识别技术的燃气远程开户系统...
  13. 「干货」从动态的角度分析DDR的时序结构
  14. Linux不能连接蓝牙音箱,【搁浅St|开发日记】彻底解决dueros连接蓝牙音箱的问题...
  15. 算法小讲堂之B树和B+树(浅谈)|考研笔记
  16. 单月涨粉30w+,他们掌握引流法宝,小红书1月创作趋势是什么?
  17. php幻灯片图片不显示不出来,首页幻灯片中图片无法显示的解决办法
  18. Cadence Allegro PCB绘制:布线后的操作教程
  19. Unicode HOWTO 中文翻译
  20. 对三相电桥电路的理解

热门文章

  1. pyqt pyside2 QLabel 显示图片问题
  2. Restful 风格的通信接口
  3. java调用tshark_libtshark-core
  4. Arduino案例实操 -- 智能巡防小车(三)图形化巡线小车编程
  5. iOS-UIWebview WKWebView 页面缩放
  6. linux查找mysql安装目录_Linux下查看MySQL的安装路径
  7. 阿里云李飞飞:帮1000家企业“去O”,完成10000套传统数据仓库上云
  8. ABBYY OCR SDK免费试用了!
  9. 自己收集五款常用的HTML编辑软件
  10. chrome 搜索框记录_访问Google Chrome中的搜索框