【问题标题】:set text for javafx.scene.text.Text through css通过 css 为 javafx.scene.text.Text 设置文本
【发布时间】:2014-11-13 06:58:08
【问题描述】:

我需要将任何 JavaFX 元素的整个节点属性存储在 css 中,或者主要是 对于 javafx.scene.text.Text 或 javafx.scene.shape。

对于文本,我不确定如何通过 css 设置文本值。有可能吗?

我需要将所有属性存储在 css 中,以便我可以轻松地重新创建具有应用属性的相同元素 在这个 css 的帮助下。

TIA

【问题讨论】:

    标签: css javafx javafx-8


    【解决方案1】:

    根据official CSS documentationText 节点,这是不可能的,似乎没有与我相信您需要的网络CSS content attribute 等效。我发现 JavaFX CSS 有限,例如不支持大多数 CSS 布局属性、宽度、高度等。

    可用属性如下,加上 -fx-font-* 属性。

    • -fx-font Font.DEFAULT 继承
    • -fx-font-smoothing-type [ 灰色 |液晶]灰色
    • -fx-strikethrough false
    • -fx-text-alignment [左|中心 |对 | justify ] 左继承
    • -fx-text-origin [ 基线 |顶部 |底部]基线
    • -fx-下划线

    如果您真的很绝望,您可以使用CSS API to support custom UI Controls 创建一个支持它的自定义 Text 子类。不过,这看起来是一项艰巨的任务。

    【讨论】:

    • 没错。在 JavaFX 中,CSS 用于对场景图中的节点进行样式化(即改变它们的外观)。布局由 FXML 和/或 Java 管理,逻辑处理(处理用户输入等)由 Java 管理。这是一个经过深思熟虑的设计,旨在分离这些问题并在每种情况下提供最适合的技术。请注意,它们是一些交叉问题:例如,您可以使用 css 设置任何 Region(包括所有控件)的最小/首选项/最大大小。
    • 正如@Adam 和@James_D 所说,没有可用于设置Text 内容的CSS 属性。但是,您可以创建 Text 的子类,添加一个可样式化的属性 content 并将 textProperty 绑定到 contentProperty
    • 感谢您的意见。最后,我只需要从存储的 css/json 字符串中重新创建 Text 或其他节点。所以我在处理这个字符串本身时做了一些解决方法,因为扩展 Text 会增加很多工作来完成一件小事,并且仅对 Text 节点的情况有用。
    • 改变节点内容不是样式的观点已经过时了恕我直言。使用 CSS,我可以提供图案和形状,但不能为 Unicode 提供的特定类型的箭头指定特定的 Unicode 字形。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2012-07-12
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多