7

SplitPaneを使用したJavaFXアプリケーションがあります。SplitPaneでDividerを無効にしたいので、アプリケーションの実行中にその位置を変更することはできません。これどうやってするの?

4

4 に答える 4

9

そのための API がないため、シーンが表示されたら、ルックアップ関数を使用して ID でノードを見つける必要があります。この場合、 のDividerID は ですsplit-pane-divider

ノードが見つかったら、マウス イベントに対して透過的に設定します。

@Override
public void start(Stage primaryStage) {
    final SplitPane splitPane = new SplitPane();
    splitPane.setOrientation(Orientation.HORIZONTAL);
    splitPane.setDividerPositions(new double[]{0.5});
    splitPane.getItems().add(new StackPane(new Label("Left")));
    splitPane.getItems().add(new StackPane(new Label("Right")));

    Scene scene = new Scene(splitPane, 300, 250);

    primaryStage.setScene(scene);
    primaryStage.show();

    splitPane.lookupAll(".split-pane-divider").stream()
            .forEach(div ->  div.setMouseTransparent(true) );

}
于 2014-11-05T17:14:22.130 に答える
0

SplitPane の Skin クラスを変更することもできます。SplitPaneSkin の GrepCode (ここから入手可能) からコードをコピーし、メソッド initializeDivderEventHandlers() で MouseListeners を削除し、メソッド setGrabberStyle() で setCursor 呼び出しを削除すると、分割線をドラッグしてペインのサイズを変更できなくなります;-) 最後にsetSkin を呼び出して、SplitPane にスキンを設定するだけです。

于 2015-06-16T11:41:23.670 に答える