gpt4 book ai didi

忘记了标签的 Java FX 颜色

转载 作者:行者123 更新时间:2023-11-29 04:40:20 24 4
gpt4 key购买 nike

我在简单的 JavaFX 项目中观察到以下问题。在 NetBeans 中,我创建了简单的 FXML 项目。它包含 FXML 文件

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1280.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sensordemo.MainController">
<children>
<VBox blendMode="COLOR_DODGE" layoutX="14.0" layoutY="12.0" prefHeight="453.0" prefWidth="169.0">
<children>
<VBox prefHeight="147.0" prefWidth="109.0">
<children>
<Label text="XXXXX" textFill="#8c5123">
<font>
<Font name="Arial Bold Italic" size="18.0" />
</font>
</Label>
</children>
</VBox>
<VBox prefHeight="134.0" prefWidth="83.0">
<children>
<Label text="YYYYY" textFill="#23288d">
<font>
<Font name="Arial Bold Italic" size="18.0" />
</font></Label>
</children>
</VBox>
<VBox prefHeight="167.0" prefWidth="83.0">
<children>
<Label text="ZZZZZ" textFill="#23288d">
<font>
<Font name="Arial Bold Italic" size="18.0" />
</font>
</Label>
</children>
</VBox>
</children>
</VBox>

</children>
</AnchorPane>

标签的颜色在 FX Scene Builder 中正确显示,但如果我使用 Scene Builder 的预览功能,则会看到错误的标签颜色。我在灰色后端看到白色字体。如果我创建这个简单项目的构建,我会看到相同的错误颜色。这个问题的原因是什么?在我看来,颜色的正确定义不包含在构建中。我用

  1. Netbeans 8.1
  2. Java SDK 8 64 位。
  3. Windows 7 64 位

提前致谢

最佳答案

恐怕 SceneBuilder 弄错了效果。

您正在使用 BlendMode.COLOR_DODGE .

来自javadoc:

The bottom input color components are divided by the inverse of the top input color components to produce the resulting color.

所以给定背景色分量B和文本颜色组件 T输出的组成部分 P计算为

P = min(B / (1 - T), 1)

(此处为 [0, 1] 范围内的组件)

没有您用于 Label 的颜色的颜色分量文本颜色比 0.13 深, 所以 B / (1 - T) >= B / 0.87这意味着任何带有组件的背景颜色(0.87, 0.87, 0.87)或更亮的颜色将显示为白色。 JavaFX 场景中的默认背景就是这种情况。所以白色是预期的颜色。

也许你应该使用不同的 blendMode或更改 AnchorPane将背景设置为更暗的颜色以查看文本的颜色:

<AnchorPane style="-fx-background-color: #888;" ...

我猜你不需要 blendMode与默认(SRC_OVER)不同,但只需要调整AnchorPane的背景:

<AnchorPane style="-fx-background-color: white;" id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1280.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1">
<children>
<VBox layoutX="14.0" layoutY="12.0" prefHeight="453.0" prefWidth="169.0">
...
</VBox>
</children>
</AnchorPane>

关于忘记了标签的 Java FX 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39445937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com