【问题标题】:JavaFX TextArea Hiding Scroll BarsJavaFX TextArea 隐藏滚动条
【发布时间】:2012-12-21 19:35:37
【问题描述】:

我有一个 TextArea() 并想隐藏垂直/​​水平滚动条。我看到该控件似乎有一个内置的滚动窗格,可以根据需要显示。

    TextArea numberPane = new TextArea();

    numberPane.setEditable(false);
    numberPane.setMaxWidth( 75 );

    // Set the characteristics of our line number pane
    numberPane.setId( "line-number-pane" );

在我的 CSS 文件中,我有以下设置。

    #line-number-pane
    {
        -fx-text-fill: white;
        -fx-background-color: black;
        -fx-font: 12px "Courier New";
        -fx-font-family: "Courier New";
        -fx-font-weight: bold;
    }

    #line-number-pane .scroll-pane
    {
        -fx-hbar-policy : never;
        -fx-vbar-policy : never;
    }

正如预期的那样,文本区域的字体/颜色/大小可以正常工作。但是,滚动窗格策略似乎不起作用。

我是否应该能够通过 CSS 文件隐藏滚动条,或者是否有一些代码可以解决问题。

谢谢。

【问题讨论】:

  • 它适用于 JavaFX 11。

标签: javafx-2


【解决方案1】:

来自How can I hide the scroll bar in TextArea?

移除水平滚动条

textArea.setWrapText(true);

移除垂直滚动条

ScrollBar scrollBarv = (ScrollBar)ta.lookup(".scroll-bar:vertical");
scrollBarv.setDisable(true);

CSS

.text-area .scroll-bar:vertical:disabled {
    -fx-opacity: 0;
}

【讨论】:

  • “ta.lookup”中的“ta”是什么?
  • 很久没有回答这个问题了,但我认为它应该是textArea(或者更具体地说,ta 是对TextArea 的引用)。
  • TextArea 实例或类?因为我参考实例替换了它,我得到了 NullExceptionError。所以什么都没找到。
【解决方案2】:

我只是非常简单地使用 StyleSheet:

CSS

.text-area .scroll-bar:vertical {
    -fx-pref-width: 1;
    -fx-opacity: 0;
}
.text-area .scroll-bar:horizontal {
    -fx-pref-height: 1;
    -fx-opacity: 0;
}

不需要那些古怪的代码。

【讨论】:

    【解决方案3】:

    我观察了 TextAreaSkin 类的代码,发现一个 void layoutChildren(x, y, w, h) 方法,称为“在场景图的布局过程中”,事实上,每次当控件发生某些事情时,都包含一个代码,该代码在 AS_NEEDED 之间更改 hbarPolicy 和 vbarPolicy并且从不,根据当前的控制状态。

    所以,看起来,没有机会用它做一些事情,使用 css。

    尽量让滚动条不可见。但是,正如我看到的 ScrollPaneSkin 的代码,滚动条被创建一次,但它们的可见性状态似乎在控件工作期间发生了变化,因此,不要使用 setVisible(false) (在最近的布局中将被忽略),而是尝试使用一个 setOpacity(0.0)。 (我不确定,它会起作用,但值得一试)。

    此外,您可以使用 Parent.getChildrenUnmodifiable() 方法在控件结构中应用对滚动条的递归搜索,而不是使用 CSS,并手动使它们不可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 2012-06-27
      • 2017-02-08
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      相关资源
      最近更新 更多