Java在Mac OSX上 - 检测程序是否全屏显示

5
我写了一个Java程序,并让用户使用Mac的全屏功能,我想知道程序是否处于全屏状态。问题在于,我不知道如何检测用户何时使程序全屏,因为他们是通过点击不属于我的程序的按钮来实现的。有没有办法检测我的程序是否处于全屏状态?
如果我表述不够清楚,这里有一个全屏按钮的示例。 fullscreen button example

你有没有尝试查看OS X是否使用了扩展状态?我的经验是,点击“扩展”按钮并不会这样做,因此值得看看他们是否为此设置了“最大化”标志。 - Radiodef
这是一个Objective-C的答案,但我很好奇在Java中是否也可能:https://dev59.com/S2w15IYBdhLWcg3wIYK_ - JAL
@Radiodef,不幸的是,它没有。 - Tyler
你尝试过添加一个 WindowStateListener 并检查触发的 WindowEventgetOldState()getNewState() 吗?虽然看起来这种方法不太可能奏效,因为 OS X 没有使用扩展框架状态,但还是值得一试的。 - FThompson
2个回答

3

假设您正在使用JFrame,请让它实现com.apple.eawt.FullScreenListener。这样,您就可以访问以下方法:

@Override
public void windowEnteringFullScreen(AppEvent.FullScreenEvent fse) {
}

@Override
public void windowEnteredFullScreen(AppEvent.FullScreenEvent fse) {
}

@Override
public void windowExitingFullScreen(AppEvent.FullScreenEvent fse) {
}

@Override
public void windowExitedFullScreen(AppEvent.FullScreenEvent fse) {
}

您可以按照tincopper2所说的方式进行类似的操作;根据窗口是否正在打开或关闭将布尔值设置为true/false。

来源:对问题的正确答案的评论。


非常感谢,这正是我所寻找的。 - Tyler

0

嗯,有一件事情可能是最简单的事情,那就是使其全屏或不调用一个将全局动态变量更改为true或false的函数,命名为"fullscreen"之类的东西,然后只需检查它是否全屏,您可以返回变量定义的响应。


1
我想这样做,但我无法检测用户是否点击了全屏按钮,因为它是Mac GUI的一部分,而不是我的Java程序。我也无法从我的JFrame中移除该按钮,否则将禁用其全屏功能。 - Tyler
你可以更改窗口类型,以便不具有关闭和调整大小的轮廓,并使用JFrame创建自己的按钮将其设置为全屏。 - tincopper2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接