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;

目录
相关文章
|
Java
UOS系统JAVA应用在任务栏显示类名的问题跟踪调用
UOS系统JAVA应用在任务栏显示类名的问题跟踪调用
96 0
|
Java Linux
全网首发:成功解决UOS系统上运行JAVA程序任务栏名称问题
全网首发:成功解决UOS系统上运行JAVA程序任务栏名称问题
235 0
|
9天前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
46 0
|
22天前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
55 16
|
1月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
1月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
2月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
296 83
|
2月前
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
137 0
|
2月前
|
存储 Java 调度
Java虚拟线程:轻量级并发的革命性突破
Java虚拟线程:轻量级并发的革命性突破
240 83