2016-12-21 7 views
0

は、任意のJavaFXアプリケーションのprimaryStageにこれを追加します。JavaFX Stage - 最大化されたステージが最小化/復元されたときに非アイコンイベントをリッスンする方法

primaryStage.iconifiedProperty().addListener(e -> { 
    System.out.println("iconified: " + primaryStage.isIconified()); 
}); 
  • は、ステージを最小限に抑えます。出力は「アイコン化されました:true」です。
  • ステージを復元します。出力は「アイコン化された:false」です。
  • ステージを最大化し、最小化します。出力は「アイコン化されました:true」です。
  • 今すぐステージを復元してください。出力は "iconified:false"にする必要がありますが、代わりに何も出力しません。

私のiconifiedPropertyリスナーは、最大化されたステージを解除するときに呼び出されていません。私は間違っているのですか、これはJavaFXのバグですか?私はJava 1.8.0_65を使用していますが、JFXのどんなversonにも付属しています。ありがとう!

+0

申し訳ありませんが、私はまた、Windows 7 x64上にいることを忘れていた。 – BinaryDigit09

+0

タグの下にある[編集]リンクをクリックすると、忘れてしまったことがまだ残っています... – fabian

答えて

0

これはJavaFXのバグで、さまざまなバージョンのバージョンと互換性があります。 WebViewなどの一部のコンポーネントがこの状況で再描画を拒否すると、特に厄介なことになります。アプリケーションがまだ最小化されているため、再描画する必要がないと思われるからです。

  • jre1.8.0_73::固定
  • jre1.8.0_111:壊れた
  • jre1.8.0_121:壊れた
  • jre1.8.0_131:固定
  • 私自身の観察から

  • jre1.8.0_152:固定

現在、jre1.8.0_の回避策を探しています111これは私たちが使用しなければならないものです(121と131のより深刻なバグが原因です)。

+0

私の回避策は、ブール値フラグ( 'wasMaximized')に最大化状態を記録してからsetMaximized(false)ステージをアイコン化するたびに。 isIconified()がfalseで、 'wasMaximized'がtrueの場合、iconifiedProperty()コールバックはsetMaximized(true)を呼び出します。愚かなハックだが、うまくいく。 – BinaryDigit09

関連する問題