caspian.css를 기반으로 CSS 스타일 시트를 만들었습니다. 내 질문에 기본 스킨으로 새 CSS 스킨을로드 할 수 있습니까?기본 스킨 용 CSS 파일 설정
또한 런타임 중에 어떻게 스킨을 변경할 수 있습니까?
caspian.css를 기반으로 CSS 스타일 시트를 만들었습니다. 내 질문에 기본 스킨으로 새 CSS 스킨을로드 할 수 있습니까?기본 스킨 용 CSS 파일 설정
또한 런타임 중에 어떻게 스킨을 변경할 수 있습니까?
Scene
또는 Parent
에 스타일 시트를 직접 추가하여 노드 및 모든 뒤끝에 적용 할 수 있습니다. 두 클래스는 모두 getStylesheets()
이고 ObservableList<java.lang.String>
을 반환하며 객체에 적용된 스타일 시트 중 URL
을 포함합니다. 이 목록을 수정하십시오!
fxml을 사용하는 경우 스타일 시트를 지정할 수도 있습니다 (물론 초기 스타일 시트 만 설정합니다).
다음은 장면 작성시 스타일 시트를 추가하는 방법의 예입니다. 물론 언제든지 목록에서 스타일 시트를 제거하고 다른 스타일 시트를 추가 할 수 있습니다. Style.css
은 여기에 추가하려는 스타일 시트이며 a.b
스타일 시트가 포함 된 패키지입니다.
// Load some content from some fxml file; Style.css not added there
Parent parent = (Parent) fxmlLoader.load(
getClass().getResourceAsStream("MainFrame.fxml"));
// create scene with content
Scene scene = new Scene(parent);
// alternatively use Node.getScene() for any node to get the scene
// add the stylesheet
scene.getStylesheets().add(
getClass().getClassLoader().getResource("a/b/Style.css").toString());
// ...
ObservableList<T>
는 java.util.List<T>
확장하고 쉽게 사용할 수 있어야합니다.
때로는 예상대로 동작하지 않을 수도 있습니다. 예 : 콤보 박스를 클릭하면 콤보 박스가 보이지 않으며 장면의 루트 노드에서이 노드까지의 경로는 루트 노드 만 공유해야합니다. 따라서 combobox가 포함 된 창에 스타일 시트를 추가하면 (장면의 루트 노드가 아닌 경우) 팝업 스타일이 적용되지 않습니다.
다음 그림은 스타일이 지정된 팝업창이있는 콤보 상자의 스크린 샷입니다. 이는 ComboBox가 포함 된 AnchorPane 대신 css 파일이 장면에 추가 되었기 때문에 작동합니다. 색상을 지정할 항목에 대해 다른 CSS 클래스를 사용했습니다. 이 내가
.indexed-cell.class-value-bad-1 {
-fx-background-color: orange;
}
.indexed-cell.class-value-good-1 {
-fx-background-color: forestgreen;
}
.indexed-cell.class-value-normal {
-fx-background-color: white;
}
모든 코드 예제하시기 바랍니다 사용되는 스타일 클래스입니다
(빨간색 RECT와 텍스트는 물론 내 응용 프로그램의 일부가 아닌)? –
@PeterPenzov : 코드 예를 추가했습니다. 희망이 도움이됩니다. – fabian
마지막으로 한 가지. 어떻게하면 콤보 상자로 이것을 할 수 있고 런타임 중에 그것을 바꿀 수 있습니까? –