我ListView在我的程序中使用了许多很多样式Text的程序.目前,我正在做这样的事情
case COMMENT:
t = new Text(lexer.comment.toString());
t.setStyle(BASE_STYLE + COMMENT_STYLE);
Run Code Online (Sandbox Code Playgroud)
样式存储为java字符串.我的global.css应用程序中有一个用于为场景的某些静态节点设置样式,但对于以编程方式创建的文本,我不知道如何访问它.我尝试使用t.setId(..)并在css文件中放置样式定义,但这不起作用.
有没有办法可以将我的不同文本类型的所有样式存储在一个CSS中并轻松访问它们?请注意,我正在创建许多这些文本对象.
将CSS样式应用于JavaFX节点(或它们的组合)有三种方法:
Node通过访问s css样式类Node.getStyleClass().这将返回一个ObservableList,您可以在其中添加和删除样式类.:hover或:active使用Node.pseudoClassStateChanged().setStyle()),但我不喜欢这个选项,因为将CSS部分移动到一个单独的文件中提供了许多优点.对于#1和#2,您需要将样式表附加到场景/节点,使用Scene.getStylesheets()或Parent.getStylesheets()存储CSS定义.例如:
listView.getStylesheets().add(getClass().getResource("myStyles.css").toExternalForm());
Run Code Online (Sandbox Code Playgroud)
#1的附加信息:
如果要将样式类添加my-node到JavaFX节点:
node.getStyleClass().add("my-node");
Run Code Online (Sandbox Code Playgroud)
现在您可以在CSS文件中设置该节点的样式:
.my-node {}
Run Code Online (Sandbox Code Playgroud)
#2的附加信息:
您可以声明并使用自己的伪类
PseudoClass comment = PseudoClass.getPseudoClass("comment");
node.pseudoClassStateChanged(comment, true);
node.pseudoClassStateChanged(comment, false);
Run Code Online (Sandbox Code Playgroud)
在你的css文件中:
.my-node:comment {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |