Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaFXCSS中,-fx文本填充和-fx文本内部颜色之间有什么区别?_Java_Css_Javafx_Javafx Css - Fatal编程技术网

在JavaFXCSS中,-fx文本填充和-fx文本内部颜色之间有什么区别?

在JavaFXCSS中,-fx文本填充和-fx文本内部颜色之间有什么区别?,java,css,javafx,javafx-css,Java,Css,Javafx,Javafx Css,从中,我对-fx文本填充属性有足够的了解,可以使用它 在处理一个更大的JavaFX项目(最近更新为JavaFX16)时,我遇到了一些CSS代码,它使用-fx文本内部颜色显然实现了完全相同的功能,即更改TextField控件的文本颜色 因为我找不到关于第二处房产的任何文件,我决定在这里询问 有人能解释这两个属性之间的区别吗?为什么我们可能需要这两个属性,以及什么时候更喜欢其中一个属性?-fx text fill是一个CSS属性,它是为具有文本属性的控件定义的,例如label及其子类,以及TextI

从中,我对-fx文本填充属性有足够的了解,可以使用它

在处理一个更大的JavaFX项目(最近更新为JavaFX16)时,我遇到了一些CSS代码,它使用-fx文本内部颜色显然实现了完全相同的功能,即更改TextField控件的文本颜色

因为我找不到关于第二处房产的任何文件,我决定在这里询问

有人能解释这两个属性之间的区别吗?为什么我们可能需要这两个属性,以及什么时候更喜欢其中一个属性?

-fx text fill是一个CSS属性,它是为具有文本属性的控件定义的,例如label及其子类,以及TextInputControl及其子类

如问题中所述,该财产列在清单中

-fx文本内部颜色不是属性,而是一种查找颜色,本质上是默认样式表中定义的CSS颜色变量。对于背景色设置为的控件(即文本框、密码框、列表、树和表),它用作-fx text fill属性的值

在根级别更改-fx文本内部颜色会影响更改所有文本框、密码框、列表、树和表上的文本颜色

请注意,-fx text internal color的默认值设置为颜色阶梯,这取决于-fx control internal background的值。也就是说,当-fx控件内部背景暗度小于45%强度时,将其设置为-fx light text color;当其亮度大于60%强度时(默认情况下),将其设置为-fx mid text color,否则将其设置为-fx深色text color。它们的默认值分别为白色、333和黑色

这些默认设置的效果是获得始终与背景形成对比的文本填充;因此,如果更改-fx控件内部背景的值,文本颜色将自动调整

为应用程序定义生产级样式实际上有两种不同的方法:

定义应用程序中使用的所有控件的样式。在这种方法中,您将设置每个控件的属性,或者至少设置与默认控件不同的属性。这是更多的工作,但是创建了一个独立的样式,如果用户有一个带有新的默认样式表的JavaFX实现,那么这个样式在将来可能更健壮

点击默认样式表modena.css并更改所有内容所基于的已查找颜色的值。这要容易得多。通过更改-fx base的值,您可以走很长的路,大多数其他查找颜色都是从该值定义的。其他键查找颜色包括

-fx背景,用于窗口和窗格的背景色 -fx控件内部背景,用于文本框、列表、表格和树的背景色 -fx深色文本颜色、-fx中间文本颜色和-fx浅色文本颜色,用于定义在-fx背景和-fx控件内部背景上绘制的文本的颜色阶梯 -fx重点选择,-fx默认按钮,-fx焦点颜色和-fx微弱焦点颜色 尝试创建应用程序并使用

 .root { -fx-base: black; }
作为样式表,在任何地方都没有设置其他样式。你应该看到一个非常有效的黑暗主题。您可能想更改一些其他颜色,特别是选择和焦点,但仅此更改就足够了

请注意,如果您使用更改查找颜色的方法,而不是单独设置所有控件的属性,那么您对新的默认样式表并不健壮。通过将用户代理样式表显式设置为MODENA,可以使此功能更加强大:


这是对我问题的一个非常深入的回答。非常感谢。对于新的默认样式表,什么是不健壮的?我们目前为每个fxml文件声明了它应该使用的css文件。@Chaoskatze这意味着,如果您依赖于在Modena中声明的查找颜色,并且将来有一个全新的JavaFX版本,带有一个全新的默认样式表,您的应用程序可能无法与该JavaFX版本正常工作。
 Application.setUserAgentStylesheet(Application.STYLESHEET_MODENA);