Java 设置自定义TextArea背景的秘诀是什么?

Java 设置自定义TextArea背景的秘诀是什么?,java,javafx,javafx-2,background-color,fxml,Java,Javafx,Javafx 2,Background Color,Fxml,这个问题是在一些关于JavaFXTextArea控件的“发现”之后提出的。我已经到了问自己是否有bug和/或需要解决的问题的阶段 JavaFX-JavaDoc ,并通过以下方式显示从区域继承的-fx背景色属性: javafx.scene.layout.区域 javafx.scene.control.control javafx.scene.control.TextInputControl javafx.scene.control.TextArea 这些属性从区域继承: 从类jav

这个问题是在一些关于JavaFXTextArea控件的“发现”之后提出的。我已经到了问自己是否有bug和/或需要解决的问题的阶段

JavaFX-JavaDoc

,并通过以下方式显示从区域继承的-fx背景色属性:

  • javafx.scene.layout.区域
    • javafx.scene.control.control
      • javafx.scene.control.TextInputControl
        • javafx.scene.control.TextArea
这些属性从区域继承:

从类javafx.scene.layout.Region继承的属性

,边框,缓存形状,中心形状,高度,插图,最大高度,最大宽度,最小高度,最小宽度,不透明插图,填充,预高,预宽,缩放形状,形状,snapToPixel,宽度

我一直运气不好。我的主播是:黑底白字。我在场景生成器的锚定窗格中放置的TextArea控件是带有白色文本的白色背景。在使用场景生成器设置本地样式之前,我以为自己没有文本:-fx text fill:grey;然后我看到了文本

我将主播使用的CSS样式直接应用到文本区域——背景保持白色。我使用Scene Builder设置了一个本地样式:-fx背景色:黄色,事情会变得有趣

当我的区域背景=黑色时,我可以在白色背景和显示区域后面看到一个黄色轮廓(假定它是TextArea的黄色背景),其中有灰色文本(目前)。当然,如果我删除了当地风格的外汇文本填充,我有白色的文本在白色背景和黄色后面(环绕?)

编辑示例

 <?xml version="1.0" encoding="UTF-8"?>

 <?import javafx.scene.control.*?>
 <?import java.lang.*?>
 <?import javafx.scene.layout.*?>

 <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" 
             prefHeight="400.0" prefWidth="600.0" 
             xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
             style="-fx-background-color: black;" >
    <children>
       <TextArea layoutX="211.0"    layoutY="108.0" 
                 prefHeight="200.0" prefWidth="200.0" 
                 style="-fx-background-color: yellow;" />
    </children>
 </AnchorPane>

注意两种背景色样式设置:

  • 主播:style=“-fx背景色:黑色;”
  • TextArea:style=“-fx背景色:黄色;”
到目前为止,我还没有看到有人提到TextArea的复合控件。我认为有一些明确的问题需要回答

  • 如何为TextArea获取黑色背景上的白色文本?或者,任何一组非白色背景
  • 在场景生成器和预览窗口中,我可以看到黄色背景前面的白色背景区域是什么
  • 在哪里可以找到类似奇怪现象的信息?如果我们必须编写源代码,那么最好了解如何管理和定义这些实体

  • 设置一个不同的背景将是我期望人们想要做的事情。我错过什么了吗?提前感谢。

    文本区本身由几个元素组成,CSS层次结构有点深。乍一看,似乎setting.text区域的-fx背景色应该可以做到这一点,但实际上有一个滚动窗格,其中有一个StackPane(.viewport)和一个区域(.content),您必须满足。一般来说,您可以使用类似这样的CSS来获得所需的内容

    .text-area *.content {
        -fx-background-color: yellow;
    }
    

    您可以使用SceneBuilder 2 CSS分析器深入文本区域,查看那里发生了什么。另外,如果您还没有签出,请签出。

    这里也回答了这个问题: 如前所述,问题在于TextArea由以下部分组成:TextArea、滚动窗格和内容

    。文本区。滚动窗格。内容{
    -背景色:黑色;
    
    }
    我认为您遗漏了一些内容,但很难从您的描述中知道是什么。听起来你的背景色继承设置不正确。你能发布你正在使用的CSS吗?你使用的是自定义样式的类吗?我可以反驳这一点。它很容易复制。在场景生成器--AnchorPane中,设置-fx背景色:黑色。在文本区域中放置一个文本。它是白色的。设置-fx背景色:黄色(如图所示)。文本区域仍将为白色。如果你仔细看,你应该会看到白色的周围有一个黄色的哈罗。我用最简单的FXML示例更新了这个问题。是的,选择器允许我更改白色区域。这无助于我理解白边周围/后面边界的概念。经过更详尽的搜索,我发现“content”属性有一些文档:(并非完全没有文档记录)。另一个问题是,我只能通过样式表选择这些“内部工作”。不能在场景生成器中直接使用/试用它们。呵呵。。。