我有一个TextArea(),并希望隐藏垂直/水平滚动条.我看到控件似乎有一个内置的滚动窗格,根据需要显示.
TextArea numberPane = new TextArea();
numberPane.setEditable(false);
numberPane.setMaxWidth( 75 );
// Set the characteristics of our line number pane
numberPane.setId( "line-number-pane" );
Run Code Online (Sandbox Code Playgroud)
在我的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;
}
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,文本区域字体/颜色/大小工作得很好.但是,滚动窗格策略似乎不起作用.
我是否应该能够通过CSS文件隐藏滚动条,或者是否有一些代码可以解决问题.
谢谢.
Tra*_*vis 17
textArea.setWrapText(true);
Run Code Online (Sandbox Code Playgroud)
ScrollBar scrollBarv = (ScrollBar)ta.lookup(".scroll-bar:vertical");
scrollBarv.setDisable(true);
Run Code Online (Sandbox Code Playgroud)
.text-area .scroll-bar:vertical:disabled {
-fx-opacity: 0;
}
Run Code Online (Sandbox Code Playgroud)
我观察了 TextAreaSkin 类的代码,发现有一个 void layoutChildren(x, y, w, h) 方法,该方法被称为“在场景图的布局过程中”,事实上,每次当控件发生某些情况时,包含一段代码,根据当前的控制状态,在 AS_NEEDED 和 NEVER 之间更改 hbarPolicy 和 vbarPolicy。
所以,看起来,没有机会使用 css 来用它做一些事情。
尝试让滚动条不可见。但是,正如我看到 ScrollPaneSkin 的代码,滚动条被创建一次,但它们的可见性状态似乎在控件工作期间发生变化,因此,不要使用 setVisible(false) (这将在最近的布局中被忽略),而是尝试使用设置不透明度(0.0)。(我不确定,它会起作用,但值得尝试)。
此外,您可以使用 Parent.getChildrenUnmodifying() 方法在控制结构中应用滚动条的递归搜索,而不是使用 CSS,并手动使它们不可见。