JavaFX的文本区域隐藏滚动条(JavaFX TextArea Hiding Scroll Bar

2019-07-17 22:54发布

我有一个文本区域(),并想隐藏垂直/​​水平滚动条。 我看到该控件似乎有一个在滚动窗格中显示需要建造。

    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文件来隐藏滚动条还是有一些代码,会做的伎俩。

谢谢。

Answer 1:

从我怎样可以隐藏在文本区域滚动条? :

删除水平滚动条

textArea.setWrapText(true);

删除垂直滚动条

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

CSS

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


Answer 2:

我观察到TextAreaSkin类的代码,并发现,空隙layoutChildren(X,Y,W,H)的方法,当某事的控制发生被称为和事实上,每次“的场景图的布局通过期间” ,包含一个代码,其改变hbarPolicy和vbarPolicy AS_NEEDED和NEVER之间,根据控制的当前状态。

所以,看起来,有没有机会做somethign有了它,使用CSS。

尝试只是让滚动条看不见的。 但是,正如我看到ScrollPaneSkin的代码,滚动条创建一次,但他们的可见性状态似乎控制工作过程中发生变化,因此,而不是使用调用setVisible(假)(将在最近的布局被忽略),尝试使用一个setOpacity(0.0)。 (我不知道,它会工作,但它值得你去尝试)。

此外,而不是使用CSS,你可以申请一个递归搜索滚动条的控制结构,使用Parent.getChildrenUnmodifiable()方法,并让他们手动无形。



文章来源: JavaFX TextArea Hiding Scroll Bars
标签: javafx-2