SplitPaneを使用したJavaFXアプリケーションがあります。SplitPaneでDividerを無効にしたいので、アプリケーションの実行中にその位置を変更することはできません。これどうやってするの?
12172 次
4 に答える
9
そのための API がないため、シーンが表示されたら、ルックアップ関数を使用して ID でノードを見つける必要があります。この場合、 のDivider
ID は です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 に答える