在JavaFX中实现只读样式?

2024-01-25

我想要具有不同状态的实体(控件或属性),这些状态可以通过 CSS 着色。

例如,考虑 TextField,它可以包含两种类型的值:正常值和错误值。一旦包含错误值,应显示“红色”。但实际的颜色应该可以由 CSS 定义。

这可以实施吗?

我发现了很多Styleable*接口或类,但它们看起来能够接受任何样式。

我可以写一个实体,它从值中派生出它的风格吗?


您可以使用Node.pseudoClassStateChanged https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#pseudoClassStateChanged-javafx.css.PseudoClass-boolean-:

TextField tf = new TextField();
final PseudoClass shortText = PseudoClass.getPseudoClass("short");
final PseudoClass longText = PseudoClass.getPseudoClass("long");
tf.textProperty().addListener((observable, oldValue, newValue) -> {
    tf.pseudoClassStateChanged(shortText, false);
    tf.pseudoClassStateChanged(longText, false);
    if (newValue!=null && !newValue.isEmpty()) {
        if (newValue.length() < 5) {
            tf.pseudoClassStateChanged(shortText, true);
        } else {
            tf.pseudoClassStateChanged(longText, true);
        }
    }
});

使用这样的CSS:

.text-field:short {
 -fx-background-color: #ffaaaa;
}
.text-field:long {
 -fx-background-color: #aaffaa;
}

尽管说实话,我并不完全确定 Style Class 与 Pseudo Class 的优缺点是什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在JavaFX中实现只读样式? 的相关文章

随机推荐

  • 使用 Linq 从数据表中获取不同的行(多列不同)

    我试图区分多个列并从数据表中获取数据行 但出现错误 Dim query As IEnumerable Of DataRow From row As DataRow In SourceTable AsEnumerable Select row
  • C# 和元数据文件错误

    我使用 MSDN 上的教程创建了自己的小型 C 编译器 但它无法正常工作 我遇到一些错误 然后修复它们 然后我遇到新的 不同的错误 然后修复它们 等等 最新的错误真的让我很困惑 Line number 0 Error number CS00
  • CSS 覆盖规则和特殊性

    我经常对 CSS 覆盖规则感到困惑 一般来说 我意识到更具体的样式表会覆盖不太具体的样式表 并且特异性取决于指定的选择器数量 还有 important关键字 也发挥着作用 因此 这是一个简单的示例 我有一个包含两个表格单元格的表格 表格本身
  • sklearn的MLP Predict_proba函数内部是如何工作的?

    我想了解如何sklearn的 MLP 分类器 https scikit learn org stable modules generated sklearn neural network MLPClassifier html检索其结果pre
  • 将 png 图像转换为有损 avif

    我尝试压缩大约 1MB 的 png 以获得更小的图像 当我使用以下命令将图像压缩为 jpeg 时 for i in card png do convert resize 445x625 background white flatten i
  • Metro 应用程序中的 ListView 没有垂直滚动条

    我对 Windows Store 又名 Metro 应用程序 XAML 没有经验 所以也许我忽略了一些简单的东西 但根据书籍和示例 垂直滚动条是 ListView 控件的自然组成部分 除非明确禁用 否则会在出现时显示是 ListView 中
  • 获取画布中两点之间的距离

    我有画布绘图选项卡 并希望 lineWidth 基于最后两次鼠标移动坐标更新之间的距离 我将自己将距离转换为宽度 我只需要知道如何获得这些点之间的距离 我已经有了这些点的坐标 你可以用毕达哥拉斯定理来做 如果有两个点 x1 y1 和 x2
  • Python 和 Rust 之间零拷贝共享 Polars 数据帧的示例?

    我有一个Python函数 例如 def add data input df 对 input df Polars 数据框 进行一些操作 例如用新值填充某些列 我想在 Rust 函数中使用这个函数 input df 可能有几十兆字节大 所以我想
  • 使用 process.start 打开文本文件

    在计算皮尔逊相关并将结果写入文本文件后 我一直试图从系统中打开一个文本文件 但到目前为止 由于某种原因 代码没有打开任何记事本文件 我尝试打开其他文件 它们可以工作很好 但 txt 文件没有专门打开 甚至 docx 文件也使用相同的代码打开
  • 允许递归构造函数可能有什么好处(如果有)?

    在 Java 中 构造函数不能是递归的 编译时错误 递归构造函数调用 假设我们没有这个限制 要记住的事情 构造函数的返回类型为 void 由于它是一个 void 方法 因此您无法利用递归的完整功能 构造函数可以使用 this 调用自身 或任
  • FileChannel#force 和缓冲

    我现在想澄清一下 并在 FileOutputStream 和 FileChannel 之间画出一些相似之处 所以首先 似乎使用标准 Java io 写入文件的最有效方法是使用用 BufferedOutputStream 包装的 FileOu
  • WPF MVVM取消窗口关闭

    我是 WPF 和 MVVM 新手 我想最小化窗口而不是关闭它 换句话说 我想取消Closing窗口事件并最小化该窗口 我应该如何以 MVVM 方式进行操作 如果相关的话 最后我会设置ShowInTaskbar to false并使用WinF
  • 刷新有嵌套路由的页面时出现“404 not found”,因为Vite没有将所有路由重定向到index.html

    我可以使用 React 路由器useNavigate钩子去一个嵌套的路线 比如localhost 3000 nested route 但是一旦重新加载 我就会收到 404 未找到错误 因为它正在尝试查找localhost 3000 nest
  • 键绑定的 Atom 数据语法

    有人可以完整解释 Atom 的数据语法属性 用于键绑定选择器 的语法吗 例如 有什么区别 data grammar source example and data grammar source example 另外 如何指定多种语法 例如
  • 删除重复项,但忽略空值

    所以我知道你可以使用类似的方法来删除重复的行 the data drop duplicates subset the key 然而 如果the key对于某些值来说为 null 如下所示 the key C D 1 NaN 2 NaN 3
  • Swift 包管理器找不到模块

    我正在尝试熟悉 Swift 包管理器 这就是我所做的 swift package init type executable 在 Package swift 中添加了依赖项 swift build 一切都很好 但在我尝试之后import De
  • 禁用反应形式的输入字段

    我已经尝试遵循此处其他答案的示例 但没有成功 我创建了一个反应式表单 即动态 并且我想在任何给定时间禁用某些字段 我的表单代码 this form this fb group name Validators required options
  • SQLite 的 System.AccessViolationException

    现在 我正在处理这个错误 An unhandled exception of type System AccessViolationException occurred in Unknown Module Additional inform
  • 为什么 scala 需要存在类型来限制泛型界限?

    具有以下类层次结构 trait Provider A def get Seq A abstract class ProviderImpl A extends Provider A final override def get Seq A S
  • 在JavaFX中实现只读样式?

    我想要具有不同状态的实体 控件或属性 这些状态可以通过 CSS 着色 例如 考虑 TextField 它可以包含两种类型的值 正常值和错误值 一旦包含错误值 应显示 红色 但实际的颜色应该可以由 CSS 定义 这可以实施吗 我发现了很多St