java - 如何监听 java.awt.Window 屏幕的变化?有没有办法在使用 setFullScreenWindow() 时将焦点集中到其他窗口/程序?

标签 java window awt listener fullscreen

我有一个像这样制作的全屏窗口

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
if (gs.length >= 1)
    gs[1].setFullScreenWindow(frame);
else 
    gs[0].setFullScreenWindow(frame);

这会将框架放在第二个监视器上,除非没有第二个监视器,在这种情况下,它将把窗口放在主监视器上

现在我的问题是,我似乎无法找到一种方法将窗口推到后面并强制它失去对窗口前面的其他窗口、对话框甚至 Google Chrome 之类的东西的关注 - - 如果用户在没有插入辅助显示器的情况下启动程序,或者辅助显示器被拔掉(在这两种情况下,全屏窗口最终会出现在主显示器上),这可能会出现问题

有没有办法让其他窗口、JFrame 或窗口上方所需的任何内容获得焦点? 或者是否有某种我不知道的监听器允许我在全屏窗口移动到主显示器时处理它(我尝试在扩展 Window 的类中实现 ComponentListener)?

最佳答案

setFillScreen 是一种用于将程序设置为“全屏独占模式”的方法,这意味着您的应用程序对屏幕具有独占控制权,并且不应呈现其他程序。

您实际上只想最大化窗口吗?在这种情况下,您应该使用 Frame#setExtendedState并传递它 Frame.MAXIMIZED_BOTH

您可能还想查看setUndecorated

关于java - 如何监听 java.awt.Window 屏幕的变化?有没有办法在使用 setFullScreenWindow() 时将焦点集中到其他窗口/程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16666153/

相关文章:

javascript window.open 在这里不起作用

javascript - 在指令中使用 window.open

java - 如何检测JFrame窗口最小化和最大化事件?

java - 带有 AES 的 CBC : Encrypting in Perl and Decrypting in Java

java - Apache Beam/Java,如何设置窗口/触发器为每个窗口仅发送一次数据

c# - MonoMac 窗口无错误关闭

java - 如何使 gif 运行一次并在 Java 中停止?

java - 如何用简单的消息随机设置 JFrame

java - OutputStream 作为接口(interface)

Java 扫描器和行延续