我正在使用Popover,它用作Textfield的类似工具提示的帮助显示。它包含一个Label和一个TextArea作为内容,并在用户输入文本字段时创建。(通过Focus usPropery.addListener
)
我使用以下方式应用样式:
popOver.getRoot().getStylesheets().add(...)
(见文件)
这适用于文本区域,但仅部分适用于标签。
我的风格是这样的:
*{
-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;
}
这在我的主窗口中效果很好。包括所有标签和文本区域。一切都得到深蓝色背景和白色文本。然而,对于Popover中的标签,它只将文本颜色更改为白色,但背景保持通常的浅灰色。
我尝试使用TextArea作为解决方法。这适用于样式。但它总是从文本字段中窃取焦点。这使得无法键入某些内容。禁用TextArea可以工作,但这会改变TextArea的样式。
我已经尝试过应用另一个问题中的样式。我也尝试过用它来恢复焦点,但也不起作用。
popup.Show(this.inputField)
this.inputField.requestFocus(); // also tried this with Platform.runLater
您的问题应该是Label
不使用您在. root
样式类中覆盖的任何颜色。根据JavaFX CSS参考指南,您可以使用fx-backend-Color
对Label
的背景进行样式设置。
在样式表中添加以下行应该可以做到这一点:
.label {
-fx-background-color: -tb-dark-grey;
}
如果要为标签设置不同的样式,还可以通过创建自定义样式类为每个标签分别应用样式:
CSS:
.custom-label {
-fx-background-color: -tb-dark-grey;
}
然后将其应用于特定的标签:
Label label = new Label("I am a label");
label.getStyleClass().add("custom-label");
编辑:您可能应该知道,您的文本区域不会显示您在样式表中定义的确切颜色。如果您检查Modena样式表,它是JavaFX的默认主题和样式(这里描述了如何找到它)。您可以找到以下内容的css:
.text-area .content {
/*the is 1px less top and bottom than TextInput because of scrollpane border */
-fx-padding: 0.25em 0.583em 0.25em 0.583em; /* 3 7 3 7 */
-fx-cursor: text;
-fx-background-color:
linear-gradient(from 0px 0px to 0px 4px, derive(-fx-control-inner-background, -8%), -fx-control-inner-background);
-fx-background-radius: 2;
}
如你所见。文本区域内容的背景色并不完全是您在样式表中定义的“fx控件内部背景”,而是从衍生自“fx控件内部背景”的颜色到所需颜色的线性渐变。这对你来说可能并不明显,但很高兴知道。
设置文本区域背景的颜色,这样您的颜色就可以这样做:
.text-area .content {
-fx-background-color: tb-dark-grey;
}
当组件挂载时,我试图专注于输入。输入组件是一个样式化的组件,因此我使用innerRef来获取对元素的引用。然而,当组件挂载时,输入不会得到焦点。我已经检查了该节点是否实际获得了对DOM节点的引用。我找不到我的逻辑有任何问题。谢谢你的帮助。
我有一个样式化的组件: 当安装使用它的组件时,我想
问题:我想更改输入元素焦点上按钮的样式。 下面是模板代码: 以下是css代码: 预期输出:在输入框 1的焦点上。将1倍宽度的边框应用于输入框 2。更改按钮的背景颜色 实际输出: 1。边框应用于输入框 2。按钮的背景色没有变化 http://jsfiddle.net/6Y8GL/7/
在JavaFX中没有的情况下,有没有方法在TableView中为TableCell设置样式? 我尝试了此解决方案https://community.oracle.com/thread/3528543?start=0&tstart=0,但它随机无法突出显示行
在我们讨论 JavaScript 处理样式和类的方法之前 — 有一个重要的规则。希望它足够明显,但是我们仍然必须提到它。 通常有两种设置元素样式的方式: 在 CSS 中创建一个类,并添加它:<div class="..."> 将属性直接写入 style:<div style="...">。 JavaScript 既可以修改类,也可以修改 style 属性。 相较于将样式写入 style 属性,我们
当将html输入与样式化组件一起使用并将值保存为react state with onChange时,组件似乎会在每次状态更改时重新呈现,并导致输入失去焦点。有没有办法防止输入失去焦点?为什么会发生这种情况?这里有一个例子。