ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 设置JFrame而不与任务栏重叠

2019-08-25 12:02:19  阅读:202  来源: 互联网

标签:java swing jframe


我需要有一个未修饰的JFrame(setUndecorated(true)),需要全屏显示,而不与任务栏重叠.

我尝试了以下解决方案.

>调用setExtendedState(MAXIMIZED_BOTH).

>优势:
这可以正常工作,即窗口是动态调整的,除了它有以下问题.
>问题
最初窗口占据全屏
虽然框架会动态调整,但它与任务栏重叠.

>按照Does JFrame.setExtendedState(MAXIMIZED_BOTH) work with undecorated frames?中的说明尝试了以下解决方案

 GraphicsConfiguration config = aFrame.getGraphicsConfiguration();
 Rectangle usableBounds = SunGraphicsEnvironment.getUsableBounds(config.getDevice());
 aFrame.setBounds(0, 0, usableBounds.width, usableBounds.height);

>优势:
我没有得到重叠,窗口看起来很好.
>问题:
当任务栏位置/大小发生变化时,窗口不会动态调整自身.

任何帮助将不胜感激.

我想到了一个设计.但不确定其可行性.我可以使用setBounds().但是,当调整任务栏或重新定位任务栏时,我需要通知我的框架.有办法吗?

解决方法:

能够使用以下代码解决上述问题,

Rectangle usableBounds = SunGraphicsEnvironment.getUsableBounds(config.getDevice());
setMaximizedBounds(usableBounds);
setExtendedState(MAXIMIZED_BOTH);

因此,通过getUsableBounds,我可以获得离开任务栏的界限.因此我使用setExtendedState(MAXIMIZED_BOTH),当我重新调整/重新定位任务栏时,窗口会自动更新.

标签:java,swing,jframe
来源: https://codeday.me/bug/20190825/1718761.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有