fxml/css와 java의 (간단한) 조합입니다. 문제의 콤보 상자 (operationSelector)는 실제로 비활성화되어 있지만 불투명도는 0.4입니다 (1.0 대신 비활성화 된 노드의 기본값). this.operationSelector.getStyleClass()를 인쇄하면 싱글 톤 콤보 박스 클래스가 실제로 스타일 클래스의 일부임을 알 수 있습니다. 나는 모든 스타일 클래스를 사용하지 못하게했지만 singleton-combo-box를 시도했지만 비활성화되었을 때 불투명도는 0.4입니다. 명백하게 잘못된 점이 있습니까? FXML에서JavaFX ComboBox 스타일링 (사용 중지 된 psuedo-class)
(그건 그렇고, 내가 자바 8u40 초기 액세스를 사용하고 있습니다) :
<ComboBox fx:id="operationSelector" styleClass="singleton-combo-box" GridPane.columnIndex="1" GridPane.rowIndex="1" />
CSS에서 :
.singleton-combo-box:disabled {
-fx-opacity: 1.0;
}
.singleton-combo-box .list-cell:disabled {
-fx-opacity: 1.0;
-fx-text-fill: black;
}
자바에서 :
여기@FXML private ComboBox<String> operationSelector;
@FXML
private void initialize()
{
this.operationSelector.setDisable(true);
}
은이다 결과 :
민간 API를 사용하여이 작업을 수행하는 방법이있다 eckig에 의해 제안
나를 위해 잘 작동합니다. Scene Builder에서 확인해 보셨습니까? 콤보를 비활성화로 표시하면 불투명도가 1.0으로 설정되어야합니다 (파란색 기호 표시). 그렇지 않으면 당신은 적절한 CSS 파일을로드하지 않고있다. –
이것이 당신에게 효과적이라는 것을 알게되면서 나는 이것을 일으킬 수있는 것에 더 깊이 파고 들었다. 이 콤보 상자는 Dialog에 실제로 있음을 알았습니다. (비록 'initOwner'가 스타일 시트 세트와 함께 씬에 의해 소유 된 대화 상자를 만드는데 사용되었지만) 대화 상자에 스타일 시트가 명시 적으로 설정되어 있지는 않지만, 같은 : 'newProfileConditionDialog.getDialogPane() getStylesheets() 추가 (this.getClass()의 getResource (MainWindow.getUniversalStylesheet()) toExternalForm()..),'그런 스타일이 combo-에 대한 올바른했다.. newProfileConditionDialog 내부의 상자. – brcolow
'StyleManager.getInstance(). addUserAgentStylesheet()'를 사용하여 글로벌 스타일 시트를 등록 할 수 있습니다. 하지만 내부 API입니다 .. – eckig