首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX:如何在TableView中禁用ScrollBars

JavaFX:如何在TableView中禁用ScrollBars
EN

Stack Overflow用户
提问于 2019-03-11 00:22:05
回答 1查看 5.9K关注 0票数 1

我有一个JavaFX TableView,当父节点大小太小而不能显示数据时,我希望表行为截断TableView的图像,而不是使其成为可滚动的。为了澄清,我只是希望滚动条被禁用或不可见,这样它们就不会出现。

下面是我在SceneBuilder中的节点层次结构,以防有帮助。

Things我在下面尝试过

我读过这个职位,但答案只是使单元格调整大小以适应宽度,而不是禁用ScrollBar。我阅读了ScrollBar这里上的文档,但找不到visibleenabled属性。我还不走运地阅读了TableView文档这里

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

代码语言:javascript
复制
-fx-hbar-policy:
-fx-vbar-policy:

但是,将TableView封装在ScrollPane中并不像预期的那样有效。它不允许我“适合父母”。我想提到这些属性,但如果可能的话,可以直接在TableView中引用。如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-11 01:15:22

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

代码语言:javascript
复制
.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添加事件筛选器。

代码语言:javascript
复制
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收缩,那么将min大小设置为使用pref大小:

代码语言:javascript
复制
table.setMinSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);

如果您不希望TableView增长超过它的pref大小,那么对最大大小也要这样做。如果需要,还可以给出一个显式的pref大小。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55093764

复制
相关文章

相似问题

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