繁体   English   中英

JavaFX:如何在 TableView 中禁用滚动条

[英]JavaFX: How to disable ScrollBars in TableView

我有一个 JavaFX TableView ,当父节点调整得太小而无法显示数据时,我希望表格行为截断TableView的图像,而不是它变得可滚动。 澄清一下,我只是希望滚动条被禁用或不可见,所以它们不会出现。

下面是我在 SceneBuilder 中的节点层次结构,以防万一。

在此处输入图片说明

我在下面尝试过的事情

我读了这篇文章,但答案只是使单元格调整大小以适应宽度,而不是禁用ScrollBar 我在这里阅读了关于ScrollBar的文档,但我找不到visibleenabled属性。 我也在这里阅读了TableView文档,但没有运气。

我在这里搜索了 JavaFX CSS 指南,发现下面有两个策略可以引用滚动窗格。

-fx-hbar-policy:
-fx-vbar-policy:

但是将TableView包装在ScrollPane中没有按预期工作。 它不允许我“适应父母”。 我想引用这些属性,但如果可能的话,直接在TableView引用。 任何建议都非常感谢。

完全隐藏滚动条,无论它们是否“应该”显示,都可以使用以下 CSS 实现:

.table-view .scroll-bar * {
    -fx-min-width: 0;
    -fx-pref-width: 0;
    -fx-max-width: 0;

    -fx-min-height: 0;
    -fx-pref-height: 0;
    -fx-max-height: 0;
}

如果要禁用所有滚动,则可以向TableView添加事件过滤器:

table.addEventFilter(ScrollEvent.ANY, Event::consume);

// or if you only want to disable horizontal scrolling
table.addEventFilter(ScrollEvent.ANY, event -> {
    if (event.getDeltaX() != 0) {
        event.consume();
    }
});

如果您不希望TableView在父级太小时缩小,请将最小尺寸设置为使用首选项尺寸:

table.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);

如果您不希望TableView超出其首选大小,请对最大大小执行相同操作。 如果需要,您还可以提供明确的首选项大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM