2015-05-18 2 views
3

У меня есть поле со списком с некоторыми данными.Стиль стилизованного элемента JavaFX

public class Test extends Application { 
    public static final String[] items = "One Two Three".split(" "); 
    @Override 
    public void start(Stage primaryStage) throws Exception { 
     final ComboBox<String> box = new ComboBox<>(FXCollections.observableArrayList(items)); 
     box.getSelectionModel().selectFirst(); 

     primaryStage.setScene(new Scene(box)); 
     primaryStage.show(); 
    } 
} 

Enabled ComboBox

Если установить выпадающий отключить его серым цветом, но мне нужно, чтобы установить текст черный. Google говорит, что мне нужно установить непрозрачность в 1.0.

box.setDisable(true); 
box.setStyle("-fx-opacity: 1.0;"); 

И ничего не происходит. Он также стал серым.

enter image description here

Даже если установить text-fill свойство черного также неактивны.

box.setDisable(true); 
box.setStyle("-fx-opacity: 1.0; -fx-text-fill: black;"); 

enter image description here

Что происходит? Как изменить цвет текста отключенного комбо-поля?

ответ

6

Каскады свойств disabled от узла графика сцены до его дочерних узлов, поэтому все дочерние узлы комбинированного блока эффективно подбирают свои стили CSS :disabled. Так, например, Label, отображающий выбранный элемент, использует свой стиль disabled, который имеет непрозрачность, равную 0,4.

Чтобы достичь того, чего вы хотите, сделать

.combo-box:disabled, .combo-box:disabled > * { 
    -fx-opacity: 1.0 ; 
} 

во внешнем файле CSS.

Смежные вопросы