我有一个Java应用程序,它可以启动、创建GUI并正常运行。如果用户更改屏幕分辨率(从1440x900切换到1280x768),我希望能够监听该事件。
有什么想法吗?
顺便提一句 - 我希望以事件/监听器模式实现此功能,而不是使用轮询模式,在这种模式下,不需要花费额外的CPU周期来定期轮询屏幕尺寸是否发生变化。
我有一个Java应用程序,它可以启动、创建GUI并正常运行。如果用户更改屏幕分辨率(从1440x900切换到1280x768),我希望能够监听该事件。
有什么想法吗?
顺便提一句 - 我希望以事件/监听器模式实现此功能,而不是使用轮询模式,在这种模式下,不需要花费额外的CPU周期来定期轮询屏幕尺寸是否发生变化。
Toolkit.getScreenSize()
。您需要测试此功能以确定该线程对系统性能的影响有多大。它检查更改的频率取决于您的要求(应用程序需要多快地响应更改)。// screen resize listener
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
@Override
public void eventDispatched(AWTEvent event) {
// take a look at https://dev59.com/pWkw5IYBdhLWcg3wHW7n
Rectangle newSize = getEffectiveScreenSize();
if (newSize.width != windowSize.width || newSize.height != windowSize.height)
resize();
}
}, AWTEvent.PAINT_EVENT_MASK);
我对于这个问题有以下建议:
java.awt.event.ComponentListener
的接口。componentResized(ComponentEvent e)
。