2017-11-23 1 views
2

저는 입니다. TreeItems은 두 가지 기본 색상, 빨강 및 흰색입니다. 그들이 선택되었을 때 그들은 둘 다 -fx-underline:true을 가지고 있지만 나는 라인에 문제가 있습니다 Red or White을 항상 white으로 바꾸고 싶습니다. JavaFX에서 CSS로 가능합니까?JavaFX에서 TreeItem의 밑줄 색상을 변경하는 방법은 무엇입니까?

enter image description here

나는 다음을 시도했지만 작동하지 않습니다.

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

내가 treecells 착각하지 않은 경우 유휴 색상이 빨간색이지만 그들이 당신을 선택했을 때 흰색과 밑줄이 그어지기를 원할 것입니다. 맞습니까? – Vanguard

+0

@Vanguard 안녕하세요 :). 내가 원한 것은 밑줄이 항상 하얗다는 것이다. 트리 셀 텍스트의 색상은 스타일 클래스에 따라 빨간색 또는 흰색 중 하나입니다. – GOXR3PLUS

답변

4

불행히도 나는 JavaFX CSS로 그 작업을 수행하는 방법을 찾지 못했지만 다른 해결책을 찾았습니다. 즉, HBox에서 파생 된 MyTrack 클래스를 만들고 음악/mp3 아이콘으로 ImageView을 추가하고 Label을 텍스트와 함께 추가했습니다. 여기에 약간의 트릭이 있습니다. 아래쪽 테두리 색상을 설정하여 레이블에 밑줄을 긋고 의 그래픽으로 MyTrack을 설정하십시오.

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으로 인스턴스화해야합니다. 그것은 당신이 직접 그것을 최적화하는 데 필요한 예제였습니다.

+0

필자의 전체 요점은 '-fx-underline'을 트리 셀 텍스트의 색상과 상관없이 모든 색상으로 수정하는 것입니다. 예를 들어 일부 트리 셀에 흰색 텍스트가 있고 일부 트리 셀에는 빨간색 텍스트가 있지만 흰색 트리 셀에는 흰색 색상이 있어야합니다. :) – GOXR3PLUS

+1

이제 너를 잡았다. 밑줄 색상을 변경해야합니다. – Vanguard

+0

예 :) 내 친구. – GOXR3PLUS

관련 문제