簡體   English   中英

如何在JavaFX中更改TreeItem的下划線顏色?

[英]How to change TreeItem's underline color in JavaFX?

我有一個JavaFX TreeView ,其中有TreeItems具有兩種基本顏色, 紅色和白色 選擇它們時,它們都具有-fx-underline:true但是我對Red or White行有-fx-underline:true 我希望underline始終為white ,JavaFX中的css是否可能?

在此處輸入圖片說明

我已經嘗試了下面的方法,但是沒有用。

.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;
}

不幸的是,我找不到JavaFX CSS的方法,但是找到了另一個解決方案。 那就是我創建了從HBox派生的MyTrack類,並添加了一個ImageView作為音樂/ mp3圖標和帶有文本的Label 我通過設置標簽底邊框顏色並將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();
    }
}

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);
    }
}

還有瞧!

在我的示例中,此處的底部邊框顏色是淺綠色。 注意TreeItem應該用空String實例化。 這只是一個示例,您需要自己對其進行優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM