首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaFx :禁用分隔符

JavaFx :禁用分隔符
EN

Stack Overflow用户
提问于 2014-11-06 01:03:13
回答 4查看 11.9K关注 0票数 7

我有一个JavaFX应用程序和一个SplitPane。我想在SplitPane上禁用分割器,以便在应用程序运行时无法更改其位置。我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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) );

}
票数 9
EN

Stack Overflow用户

发布于 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()方法中。

票数 4
EN

Stack Overflow用户

发布于 2016-11-10 22:53:29

在Fxml文件中设置SplitPane的mouseTransparent=为true。

<SplitPane dividerPositions="0.5" mouseTransparent="true" prefHeight="652.0" prefWidth="858.0">
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26762928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档