屏幕上的Java通知设备更改



下面的简单片段可以毫无问题地获取Java中所有可用的屏幕设备:

GraphicsDevice[] gds = ge.getScreenDevices();

这么多很简单。然而,我想在这种情况发生变化时得到通知(现有屏幕发生变化,一个屏幕被删除,一个新屏幕被添加,等等)

我可以对上面的方法调用进行轮询,这是可行的,但理想情况下,当发生变化时,我想要一个通知(观察者模式样式)。我在API中看不到任何方法来挂接这样的事件。

这可能吗,通过普通JDK或附加库,或者我应该每隔一秒左右轮询一次?

从我所做的所有环顾来看,目前的答案(看看Java 7和目前提出的Java 8 API)是否定的——你只需要轮询一下就可以了。

尽管从OO的角度来看,从性能的角度来看这很糟糕,但只要你对间隔很敏感,它就不会有什么区别——这似乎是一种非常廉价的操作。我的方法是在一个单独的类中进行民意调查,并提供一个其他人可以注册的观察者模式。这项工作做得很好,所有的轮询都在一个地方,如果稍后出现更好的API,那么换成新的接口将是微不足道的。

最新更新