我正在使用Popover,它用作Textfield的工具提示类帮助显示。 它包含一个Label和TextArea作为内容,并在用户输入文本字段时创建。 (通过FocusPropery.addListener
)Controlsfx PopOver风格和焦点
我申请使用样式:
popOver.getRoot().getStylesheets().add(...)
该方法适用于文本区域(如文档documentation中发现的),但只为partialy标签。
我的风格是这样的:
*{
-tb-dark-grey: rgb(32,38,44);
}
.root {
-fx-base: -tb-dark-grey;
-fx-background: -tb-dark-grey;
-fx-control-inner-background: -tb-dark-grey;
}
这在我的主窗口的工作非常好。包括所有标签和TextAreas。一切都会得到一个带有白色文字的深蓝色背景。 但对于Popover中的标签,仅将文本颜色更改为白色,但背景保持通常的浅灰色。
我尝试使用TextArea作为解决方法。这适用于风格。但它始终窃取文本字段的重点。这使得键入内容变得不可能。禁用TextArea的作品,但改变了TextArea的风格。
我已经尝试应用在this other question中找到的样式。 我也尝试让重点回来,这也没有工作。
popup.Show(this.inputField)
this.inputField.requestFocus(); // also tried this with Platform.runLater
作品。这基本上是我最终使用的解决方案。我不喜欢明确剥皮标签的想法。作为更通用的解决方案,我编写了一个辅助类来创建弹出窗口,将所需内容包装到VBox中,并将我的基本颜色作为背景应用于VBox。 'vBox.setStyle(“ - fx-background-color:-tb-skin-base;”);'这种方式适用于所有可能的上下文形式,不仅适用于Label。这使我的CSS更清洁。也谢谢指出TextArea的颜色。 – FrankT