SplitPaneメイン GUI に奇妙な動作をしている があります。プログラムの実行間の位置を保存しようとしていますが、単純なテキストファイルを読み書きすることでそうしています。
getPosition()ただし、メソッドをファイルに保存するときに、メソッドが間違った値を返すことに気付きました。
プログラムを終了するとき、私はこのコードで位置を保存しています:
Settings.setSplitPaneLocation(Global.commentMasterController.getSplitPane().getDividers().get(0).getPosition());
Global私のメインGUIコントローラーへの参照を保持するシングルトンです。Settings設定ファイルからロードされた値を含む別のシングルトンです。
プログラムをロードすると、クラスSplitPaneから最後に保存された値をロードして、の位置を設定します。Settings
splitPane.setDividerPosition(0, Settings.getSplitPaneLocation());
問題は、プログラムをロードするときに、位置をまったく調整しなくてもSplitPane(プログラムをロードしてすぐに終了する)、保存された位置が最初に設定された位置と異なることです。
これは、プログラムの 3 つの連続した実行を示す出力です。繰り返しますが、これはプログラムを実行してすぐに終了するだけです。コントロールの位置をまったく調整しません。
setDividerPosition(): 0.9247730220492867
getDividerPosition(): 0.9105058365758755
setDividerPosition(): 0.9105058365758755
getDividerPosition(): 0.893644617380026
setDividerPosition(): 0.893644617380026
getDividerPosition(): 0.874189364461738
ご覧のとおりgetDividerPosition()、分割線の実際の位置とは異なる値を返します。
内の子ノードの最大/最小サイズを確認しましたがSplitPane、最小サイズは 0 に設定されています。