Css 动态对象的JavaFX文本样式
我在中使用了一个Css 动态对象的JavaFX文本样式,css,javafx,Css,Javafx,我在中使用了一个列表视图和许多样式化的文本。目前,我正在做这样的事情 case COMMENT: t = new Text(lexer.comment.toString()); t.setStyle(BASE_STYLE + COMMENT_STYLE); 其中样式存储为java字符串。我的应用程序中有一个global.css,用于设置场景中一些静态节点的样式,但是对于通过编程创建的文本,我不知道如何访问它。我尝试使用t.setId(..)并在css文件中放置样式定义,但这不起作用 是
列表视图
和许多样式化的文本
。目前,我正在做这样的事情
case COMMENT:
t = new Text(lexer.comment.toString());
t.setStyle(BASE_STYLE + COMMENT_STYLE);
其中样式存储为java字符串。我的应用程序中有一个global.css
,用于设置场景中一些静态节点的样式,但是对于通过编程创建的文本,我不知道如何访问它。我尝试使用t.setId(..)
并在css文件中放置样式定义,但这不起作用
是否有一种方法可以将不同文本类型的所有样式存储在一个css中并轻松访问它们?注意,我正在创建许多文本对象 有三种方法可以将CSS样式应用于JavaFX节点(或它们的组合):
节点
的css样式类通过访问。这将返回一个ObservableList,您可以在其中添加和删除样式类:hover
或:active
setStyle()
),但是我不喜欢这个选项,因为将CSS部分移动到一个单独的文件中有很多好处对于#1和#2,需要使用或将样式表附加到存储CSS定义的场景/节点。例如:
listView.getStylesheets().add(getClass().getResource("myStyles.css").toExternalForm());
#1的附加信息: 如果要将样式类
my node
添加到JavaFX节点:
node.getStyleClass().add("my-node");
现在,您可以在CSS文件中设置该节点的样式:
.my-node {}
#2的附加信息: 您可以使用声明和使用自己的伪类
PseudoClass comment = PseudoClass.getPseudoClass("comment");
node.pseudoClassStateChanged(comment, true);
node.pseudoClassStateChanged(comment, false);
在css文件中:
.my-node:comment {}
有三种方法可以将CSS样式应用于JavaFX节点(或它们的组合):
节点
的css样式类通过访问。这将返回一个ObservableList,您可以在其中添加和删除样式类:hover
或:active
setStyle()
),但是我不喜欢这个选项,因为将CSS部分移动到一个单独的文件中有很多好处对于#1和#2,需要使用或将样式表附加到存储CSS定义的场景/节点。例如:
listView.getStylesheets().add(getClass().getResource("myStyles.css").toExternalForm());
#1的附加信息: 如果要将样式类
my node
添加到JavaFX节点:
node.getStyleClass().add("my-node");
现在,您可以在CSS文件中设置该节点的样式:
.my-node {}
#2的附加信息: 您可以使用声明和使用自己的伪类
PseudoClass comment = PseudoClass.getPseudoClass("comment");
node.pseudoClassStateChanged(comment, true);
node.pseudoClassStateChanged(comment, false);
在css文件中:
.my-node:comment {}
为什么不使用css类选择器?顺便说一句,这里有Styledtext控件,那么为什么要重新创建自己的呢?@tomsontom但是当我创建一个带有
text t=new text(“blub”)
的文本时,我如何才能访问我的全局css文件呢?当我使用setStyle
引用css类时,这没有任何效果。关于风格文本:我想这样做,但在链接的问题中,我已经解释了我试图做什么。我有一周200英镑的奖金,但只有一个用户写了答案。访问css类是通过getStyleclass()完成的。add(“mycssclass”)在efxclipse,我们有一个名为StyledTextArea的控件,它可以加载文本和颜色区域——它还使用ListView——我稍后会尝试写一篇关于它的博客today@tomsontom告诉我你什么时候做的!对于我的实际应用程序,在Java7中使用swing可能会更好,因为这是Mathematica附带的版本,用户不必关心新的jre。虽然JavaFX我不知道它当时是什么形状。为什么不使用css类选择器呢?顺便说一句,这里有Styledtext控件,那么为什么要重新创建自己的呢?@tomsontom但是当我创建一个带有text t=new text(“blub”)
的文本时,我如何才能访问我的全局css文件呢?当我使用setStyle
引用css类时,这没有任何效果。关于风格文本:我想这样做,但在链接的问题中,我已经解释了我试图做什么。我有一周200英镑的奖金,但只有一个用户写了答案。访问css类是通过getStyleclass()完成的。add(“mycssclass”)在efxclipse,我们有一个名为StyledTextArea的控件,它可以加载文本和颜色区域——它还使用ListView——我稍后会尝试写一篇关于它的博客today@tomsontom告诉我你什么时候做的!对于我的实际应用程序,在Java7中使用swing可能会更好,因为这是Mathematica附带的版本,用户不必关心新的jre。虽然JavaFX我不知道它当时是什么形状。Grmpf…,但我的它与你的#1完全一样,但在添加样式时使用了“.my node”
,我想知道为什么它不起作用。重要的总是小事情。如果这回答了您的问题,请相应地标记答案;-)Grmpf..,我拥有的与你的#1完全相同,但在添加样式时使用了“.my node”
,我想知道为什么它不起作用。重要的总是小事。如果这回答了您的问题,请相应地标记答案;-)