複数の分割ペインが互いに埋め込まれた JavaFX GUI を設計しています。ユーザーがビューをリセットするオプションを選択した場合、仕切りの位置を初期値にリセットできるようにしたいと考えています。問題は、ユーザーがビューのリセット オプションを複数回クリックして、仕切りの位置を完全にリセットする必要があることです。一度実行すると、同じ向きの仕切りはリセットされますが、反対向きの仕切りはリセットされません。
これが問題の例です。スライダーをドラッグし、ウィンドウの上部にある [ビューのリセット] ボタンをクリックします。
public void start(Stage stage) throws Exception
{
SplitPane mainWindow = new SplitPane();
SplitPane leftPanel = new SplitPane();
SplitPane rightPanel = new SplitPane();
Button resetViewButton = new Button("Reset View");
VBox mainFrameVBox = new VBox();
Scene scene = new Scene(mainFrameVBox, 500, 500);
mainWindow.setOrientation(Orientation.HORIZONTAL);
mainWindow.getItems().addAll(leftPanel, rightPanel);
mainWindow.setDividerPosition(0, 0.125);
leftPanel.setOrientation(Orientation.VERTICAL);
leftPanel.getItems().addAll(new VBox(new Text("Test 1")), new VBox(new Text("Test 2")));
leftPanel.setDividerPosition(0, 0.5);
rightPanel.setOrientation(Orientation.VERTICAL);
rightPanel.getItems().addAll(new VBox(new Text("Test 3")), new VBox(new Text("Test 4")));
rightPanel.setDividerPosition(0, 0.85);
mainFrameVBox.getChildren().addAll(resetViewButton, mainWindow);
VBox.setVgrow(mainWindow, Priority.ALWAYS);
stage.setScene(scene);
stage.show();
resetViewButton.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
mainWindow.setDividerPosition(0, 0.125);
leftPanel.setDividerPosition(0, 0.5);
rightPanel.setDividerPosition(0, 0.85);
}
});
}
各スライダーに遅延タイマーを追加してみましたが、これで問題は解決しましたが、面倒な解決策のように感じます。より良いアプローチがあれば、何かアイデアはありますか?