我有一个JavaFX应用程序和一个SplitPane。我想在SplitPane上禁用分割器,以便在应用程序运行时无法更改其位置。我该怎么做呢?
发布于 2014-11-06 01:14:22
没有这样的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) );
}
发布于 2018-06-25 01:46:33
上面的帖子对我来说都不起作用。我找到了一个对我有效的解决方案:这段代码适用于当你的splitPane在中间分割并且只有一个分割符的情况,因此分割符的位置被设置为0.5
。如果你不知道分频器的位置,你可以通过divider.getPosition();
得到它。
Divider divider = splitPane.getDividers().get(0);
divider.positionProperty().addListener(new ChangeListener<Number>()
{
@Override
public void changed( ObservableValue<? extends Number> observable, Number oldvalue, Number newvalue )
{
divider.setPosition(0.5);
}
});
这段代码在GUI Controller类的initialize()
方法中。
发布于 2016-11-10 22:53:29
在Fxml文件中设置SplitPane的mouseTransparent=为true。
<SplitPane dividerPositions="0.5" mouseTransparent="true" prefHeight="652.0" prefWidth="858.0">
https://stackoverflow.com/questions/26762928
复制相似问题