JAVA获得任务栏高度
2016-01-14 19:24
288 查看
很多人在用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中已经为我们提供了获得容器边界的类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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树