JAVA获得任务栏高度-阿里云开发者社区

开发者社区> 蒋固金> 正文

JAVA获得任务栏高度

简介:
+关注继续查看

很多人在用JAVA做桌面应用程序的时候,有时候会用到在桌面右下角弹出提示框,就好像QQ登录后的提示一样,显示在桌面的右下角,任务栏的上面,过段时间自动消失,但是我们如何获得任务栏的高度呢,这个问题我原来也纠结了一段时间,有的人说,JAVA无法做到,要用到JNI编程,用C/C++去获得任务栏高度,今天我为大家介绍一种方法,不需要这么麻烦。
在JAVA中已经为我们提供了获得容器边界的类Insets,归根结底,屏幕桌面也是一个容器,所以我们可以使用该类进行操作。
在JDK API中对Insets类的描述如下:
Insets对象是容器边界的表示形式。它指定容器必须在其各个边缘留出的空间。这个空间可以是边界、空白空间或标题。
由此可知,桌面正好符合,任务栏就是桌面容器的底部,在Insets类中包含四个字段,分别为:
int bottom 底部的inset
int left 左边的inset
int right 右边的inset
int top 顶部的inset
那么,我们如何构造出Insets的实例呢?在Toolkit中提供了getScreenInsets(GraphicsConfiguration gc);方法获得屏幕的Insets实例。
在JDK API中对Toolkit类的描述如下:
此类是所有 Abstract Window Toolkit 实际实现的抽象超类。Toolkit 的子类被用于将各种组件绑定到特定本机工具包实现。
许多 GUI 操作可以异步执行。这意味着如果设置某一组件的状态,随后立刻查询该状态,则返回的值可能并没有反映所请求的更改。这包括但不局限于以下操作:
滚动到指定位置。
例如,如果原始请求没有被处理,那么调用 ScrollPane.setScrollPosition 并随后调用 getScrollPosition 可能返回一个不正确的值。
将焦点从一个组件移动到另一个组件。
有关更多信息,请参阅 The Swing Tutorial 的 Timing Focus Transfers 一节。
使顶层容器可见。
对 Window、Frame 或 Dialog 调用 setVisible(true) 可能异步发生。
设置顶层容器的大小或位置。
对 Window、Frame 或 Dialog 调用 setSize、setBounds 或 setLocation 将被转发到底层窗口管理系统,并可能被忽略或修改。有关更多信息,请参阅 Window。
大多数应用程序不应直接调用该类中的任何方法。Toolkit 定义的方法是一种“胶水”,将 java.awt 包中与平台无关的类与 java.awt.peer 中的对应物连接起来。Toolkit 定义的一些方法能直接查询本机操作系统。
综上所述,我们可以使用如下代码获得屏幕任务栏高度
// 获取屏幕的边界
Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration());
// 获取底部任务栏高度
int taskBarHeight = screenInsets.bottom;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4512 0
第12周-任务2-双肩挑干部
【题目】(教材P394习题9)分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求: (1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 (2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据
750 0
java 计划任务
有一些程序是永不停歇的,比如监控某个数据表中的内容是否变化。若有变化通知给其他程序。下面两个类可以作为模版。
648 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7800 0
C03-Java同步实践加强班第13周上机任务
【感谢胡光老师提供题目】 (回到C03-Java同步实践加强班学习安排) 1.封装一个求一元二次方程根的类SquareEquation,要求考虑解方程的异常,再编写一个窗口类EquationFrame。要求窗口使用三个文本框和一个文本区,其中三个文本框用来显示生更新方程对象的系数,文本区用来显示方程的根。窗口中有一个按钮,用户单击按钮后,程序用文本框中的数据修改方程的系数,并将方程的根显示
881 0
深入 Java Timer 定时任务调度器实现原理
使用 Java 来调度定时任务时,我们经常会使用 Timer 类搞定。Timer 简单易用,其源码阅读起来也非常清晰,本节我们来仔细分析一下 Timer 类,来看看 JDK 源码的编写者是如何实现一个稳定可靠的简单调度器。
1130 0
第8周-任务1-方案3-复数类中运算符重载(与实数运算)
  接:第8周-任务1-方案2-复数类中运算符重载(非成员函数实现)   本文在方案2的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算。设Complex c; double d; c?d和d?c的结果为“将d视为实部为d的复数同c运算”的结果(其中?为+、-、*、/之一)。另外,再定义一目运算符 -,-c相当于0-c。 【讲解视频】 【参考解答
1145 0
Azkaban 任务调度系统(安装搭建)
无论是在业务开发还是在大数据开发中,脚本都是必不可少的存在,在初期我们会使用crontab来解决问题,那么当发现规模变大监控需求可视化需求的到来Crontab已经显然满足不了需求,抱着一颗解决大数据任务脚本和业务任务脚本难题的心态最终在oozie和Azkaban选择了使用Azkaban来作为公共任务调度系统,那么就随着笔者一同来学习Azkaban的基础搭建场景和基本使用吧.
1947 0
第8周-任务1-方案1-复数类中运算符重载(成员函数实现)
【题目】实现复数类中的运算符重载:定义一个复数类重载运算符+、-、*、/,使之能用于复数的加减乘除。 方案一:请用类的成员函数完成运算符的重载;class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator+(Compl
978 0
+关注
115
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载