Javafx TextField伪ClassStateChanged方法不起作用

标签 java javafx

我将 PseudoClass 设置为 TextField 以在发生错误时突出显示它们。 仅当我在其中单击鼠标(以放置文本值)时,TextField 周围才会出现红色边框,但我需要始终显示边框。

这是我设置边框的方法:

element.pseudoClassStateChanged(PseudoClass.getPseudoClass("error"), true);

直到最后一刻都工作得很好,也许我不小心切换了一些选项?

CSS 文件:

.text-field:error {
    -fx-focus-color: red ;
}

.table-view .column-header .label {
    -fx-font-weight: normal;
}

.list-cell:other-option {
    -fx-opacity: 0.5 ;
}

.titled-pane:pane-error  {
    -fx-border-color: red ;
}

最佳答案

-fx-focus-color 仅当焦点位于控件上时使用。如果您想要适用于控件但没有焦点的 css,请更改 -fx-background-color

modena.css 中,.text-input:focused-fx-background-color

-fx-background-color: 
        -fx-focus-color,
        -fx-control-inner-background,
        -fx-faint-focus-color,
        linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background);

您只需将其中的 -fx-focus-color 元素更改为 red 即可:

-fx-background-color:
            red,
            -fx-control-inner-background,
            -fx-faint-focus-color,
            linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background);

您还可以根据您的要求更改-fx-control-inner-background-fx-faint-focus-color

关于Javafx TextField伪ClassStateChanged方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30904567/

相关文章:

javafx - 在 JavaFx 的 BorderPane 中间居中一个 vBox

java - JavaFX应用程序中的应用程序启动方法出现异常

java - Autowiring 具有 @Configuration @EnableScheduling @Component 注释的 bean 组件时出错

java - 更改字段的本地方法参数?

java8 使用累加器和组合器减少流

java - 如何更改 JavaFX DateTime API 中 LocalDate 的开始时间和结束时间

user-interface - 从 Controller 内关闭阶段

java - JavaFX 中以编程方式生成的 TriangleMesh 的纹理坐标

java - AdoptOpenJDK jdk-slim 与 jre 的目的?

java - java 中的反射并尝试复制 Controller /操作