[英]How to change TreeItem's underline color in JavaFX?
I have a
JavaFX TreeView
which hasTreeItems
with two basic colors , red and white .我有一个
JavaFX TreeView
,其中有TreeItems
具有两种基本颜色, 红色和白色 。 When they are selected they both have-fx-underline:true
but i have a problem with the line beingRed or White
i want theunderline
to be alwayswhite
, is that possible with css in JavaFX ?选择它们时,它们都具有
-fx-underline:true
但是我对Red or White
行有-fx-underline:true
我希望underline
始终为white
,JavaFX中的css是否可能?
I have tried the below but it doesn't work . 我已经尝试了下面的方法,但是没有用。
.tree-cell-white:selected {
-fx-font-weight: bold ;
-fx-text-fill:white;
-fx-underline: true;
-fx-underline-fill: orange;
-fx-underline-color: blue;
}
.tree-cell-red:selected {
-fx-font-weight: bold ;
-fx-text-fill:firebrick;
-fx-underline: true;
}
Unfortunately I could not find how to do it by JavaFX CSS, but I found another solution. 不幸的是,我找不到JavaFX CSS的方法,但是找到了另一个解决方案。 That is I created
MyTrack
class that derives from HBox
and added an ImageView
as an music/mp3 icon and Label
with text. 那就是我创建了从
HBox
派生的MyTrack
类,并添加了一个ImageView
作为音乐/ mp3图标和带有文本的Label
。 Here is a little trick I underlined label by setting its bottom border color and set MyTrack
as a graphic for TreeItem
. 我通过设置标签底边框颜色并将
MyTrack
设置为TreeItem
的图形来给标签加上下划线。
package underlined.treeview;
import javafx.application.Application;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.stage.Stage;
import java.util.Arrays;
import java.util.List;
public class TreeViewApp extends Application {
public static void main(String[] args) {
launch(args);
}
private Parent createContent() {
TreeItem<String> treeRoot = new TreeItem<>("Root node");
List<TreeItem<String>> tracks = Arrays.asList(
new TreeItem<>(""),
new TreeItem<>(""),
new TreeItem<>(""));
for (TreeItem<String> track : tracks)
track.setGraphic(new MyTrack("Track"));
treeRoot.getChildren().addAll(tracks);
TreeView treeView = new TreeView();
treeView.setShowRoot(true);
treeView.setRoot(treeRoot);
treeRoot.setExpanded(true);
return treeView;
}
@Override
public void start(Stage primaryStage) throws Exception {
Scene scene = new Scene(createContent());
primaryStage.setScene(scene);
primaryStage.show();
}
}
and MyTrack
class: 和
MyTrack
类:
package underlined.treeview;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
public class MyTrack extends HBox {
public MyTrack(String text) {
Label label = new Label(text);
label.setStyle("-fx-border-color: aqua;" +
"-fx-border-width: 0 0 1 0;");
Image image = new Image(getClass().getResource("/img/icon/mp3.png")
.toExternalForm());
ImageView imageView = new ImageView(image);
imageView.setFitWidth(16);
imageView.setFitHeight(16);
getChildren().addAll(imageView, label);
}
}
And Voila!!! 还有瞧!
In my example bottom border color is aqua here. 在我的示例中,此处的底部边框颜色是浅绿色。 Note that
TreeItem
should be instantiated with empty String
. 注意
TreeItem
应该用空String
实例化。 It was just an example you need to optimize it yourself. 这只是一个示例,您需要自己对其进行优化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.