2017-01-29 11 views
3

JavaFXのthe items inside a ComboBoxの色を変更することはできますか?JavaFXのコンボボックス内のアイテムをスタイルする方法

各項目の背景色を黒色に、テキストを白く、ホバリング時に緑色と白色に変更したいとします。

@FXML 
private ComboBox<String> govs; 

public void initialize() { 
    ObservableList<String> options = FXCollections.observableArrayList( 
     "Ariana", 
     "Beja", 
     "Ben Arous", 
     "Bizerte", 
     "Gabès" 
    ); 
    govs.setItems(options); 
} 

答えて

1

これはノードにCSSルールを適用することによって行うことができないので、あなたは、コンボボックスに独自のcell factory実装を提供する必要があります。

comboBox.setCellFactory(param -> new ComboBoxListCell<String>() {{ 
    setTextFill(Color.WHITE); 

    Background blackBackground = new Background(new BackgroundFill(Color.BLACK, null, null)); 
    Background greenBackground = new Background(new BackgroundFill(Color.GREEN, null, null)); 

    setBackground(blackBackground); 
    setOnMouseEntered(event -> { 
     setBackground(greenBackground); 
    }); 
    setOnMouseExited(event -> { 
     setBackground(blackBackground); 
    }); 
}}); 
関連する問題