gpt4 book ai didi

java - 如何在java中监听图形环境或设备变化

转载 作者:行者123 更新时间:2023-11-29 08:45:06 25 4
gpt4 key购买 nike

在java中可以使用获取当前的图形环境

GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

然后使用

遍历设备
GraphicsDevice[] screenDevices = graphicsEnvironment.getScreenDevices();

for (int i = 0; i < screenDevices.length; i++) {
GraphicsDevice graphicsDevice = screenDevices[i];
...
}

但是 GraphicDevice 的数量可以在运行时改变,例如通过插入 USB 显示器。或者,如果有多台显示器,用户可以更改 GraphicsDevice 的分辨率或相对于另一个图形设备移动它。

如何监听 GraphicsEnvironmentGraphicDevice 的变化?

编辑

我尝试使用以特定时间间隔检查图形环境的守护线程来实现变化检测,但它不起作用。

它不起作用,因为 GraphicsEnvironment 保存在一个 statc 变量中并且只初始化一次。

GraphicsEnvironment 的子类也缓存了 GraphicDevice。所以新的 GraphicDevice 只有在 jvm 进程重新启动时才会被检测到。

最佳答案

一个快速而肮脏的解决方案是批量执行一个小的 java 程序,它只将最后一个已知的图形环境存储在一个文件中,并在它发生变化时执行通知(执行应该是即时的,主要是运行的成本虚拟机)。

这并不优雅,但以原生方式做一些事情需要跨平台,而且最终也会变得丑陋。除非您不关心便携性。

选择你的毒药。

关于java - 如何在java中监听图形环境或设备变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com