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应用在任务栏显示类名的问题跟踪调用
60 0
|
Java Linux
全网首发:成功解决UOS系统上运行JAVA程序任务栏名称问题
全网首发:成功解决UOS系统上运行JAVA程序任务栏名称问题
151 0
|
10天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
9天前
|
算法 Java 开发者
Java中的多线程编程:概念、实现与性能优化
【4月更文挑战第9天】在Java编程中,多线程是一种强大的工具,它允许开发者创建并发执行的程序,提高系统的响应性和吞吐量。本文将深入探讨Java多线程的核心概念,包括线程的生命周期、线程同步机制以及线程池的使用。接着,我们将展示如何通过继承Thread类和实现Runnable接口来创建线程,并讨论各自的优缺点。此外,文章还将介绍高级主题,如死锁的预防、避免和检测,以及如何使用并发集合和原子变量来提高多线程程序的性能和安全性。最后,我们将提供一些实用的性能优化技巧,帮助开发者编写出更高效、更稳定的多线程应用程序。
|
7天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第11天】 在Java中,高效的并发编程是提升应用性能和响应能力的关键。本文将探讨Java并发的核心概念,包括线程安全、锁机制、线程池以及并发集合等,同时提供实用的编程技巧和最佳实践,帮助开发者在保证线程安全的前提下,优化程序性能。我们将通过分析常见的并发问题,如竞态条件、死锁,以及如何利用现代Java并发工具来避免这些问题,从而构建更加健壮和高效的多线程应用程序。
|
1天前
|
安全 Java
java多线程(一)(火车售票)
java多线程(一)(火车售票)
|
1天前
|
安全 Java 调度
Java并发编程:深入理解线程与锁
【4月更文挑战第18天】本文探讨了Java中的线程和锁机制,包括线程的创建(通过Thread类、Runnable接口或Callable/Future)及其生命周期。Java提供多种锁机制,如`synchronized`关键字、ReentrantLock和ReadWriteLock,以确保并发访问共享资源的安全。此外,文章还介绍了高级并发工具,如Semaphore(控制并发线程数)、CountDownLatch(线程间等待)和CyclicBarrier(同步多个线程)。掌握这些知识对于编写高效、正确的并发程序至关重要。
|
1天前
|
安全 Java 程序员
Java中的多线程并发编程实践
【4月更文挑战第18天】在现代软件开发中,为了提高程序性能和响应速度,经常需要利用多线程技术来实现并发执行。本文将深入探讨Java语言中的多线程机制,包括线程的创建、启动、同步以及线程池的使用等关键技术点。我们将通过具体代码实例,分析多线程编程的优势与挑战,并提出一系列优化策略来确保多线程环境下的程序稳定性和性能。
|
2天前
|
缓存 分布式计算 监控
Java并发编程:深入理解线程池
【4月更文挑战第17天】在Java并发编程中,线程池是一种非常重要的技术,它可以有效地管理和控制线程的执行,提高系统的性能和稳定性。本文将深入探讨Java线程池的工作原理,使用方法以及在实际开发中的应用场景,帮助读者更好地理解和使用Java线程池。
|
2天前
|
存储 安全 Java
Java中的容器,线程安全和线程不安全
Java中的容器,线程安全和线程不安全
9 1