我想检测JavaFX应用程序的窗口状态。我正在努力解决以下用例:
- 最大化应用程序(将最大化属性设置为true)
- 最小化应用程序(将iconified属性设置为true)
- 在最小化和最大化之间切换任意次数
醇>
按照上述步骤操作后,窗口最大化或最小化。但是,maximized
和iconified
属性都设置为true。如何确定窗口所处的两种状态中的哪一种?我能想到的最好的是:
static WindowState getState(final Stage window) {
WindowState result;
final boolean isMaximized = window.isMaximized();
final boolean isMinimized = window.isIconified();
if (isMaximized && isMinimized) {
// JavaFX is odd in that it allows this state.
// What is the best way to determine which state it is really in?
// Best I could come up with is:
result = (window.getX() <= -32000 ? Minimized : Maximized);
} else if (isMaximized) {
result = Maximized;
} else if (isMinimized) {
result = Minimized;
} else {
result = Normal;
}
return result;
}
我需要能够确定这个的原因是我正在尝试跟踪窗口的位置和状态,因此我可以将其保存到首选项文件中。有没有比将窗口位置与-32000比较更好的方法来确定当isMaximized
和isIconified
都为真时窗口实际处于哪种状态?我使用的是JDK 8u74,并在Windows 7 Enterprise SP1 x64中观察到此行为。