JavaFX确定窗口状态(最大化,最小化或正常)

时间:2016-04-08 20:10:02

标签: java javafx

我想检测JavaFX应用程序的窗口状态。我正在努力解决以下用例:

  
      
  1. 最大化应用程序(将最大化属性设置为true)
  2.   
  3. 最小化应用程序(将iconified属性设置为true)
  4.   
  5. 在最小化和最大化之间切换任意次数
  6.   

按照上述步骤操作后,窗口最大化或最小化。但是,maximizediconified属性都设置为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比较更好的方法来确定当isMaximizedisIconified都为真时窗口实际处于哪种状态?我使用的是JDK 8u74,并在Windows 7 Enterprise SP1 x64中观察到此行为。

0 个答案:

没有答案