2017-11-16 2 views
0

그래서 내 장면에 스타일 시트를 추가하려고합니다. 그 장면의 두 번째 레이어에 올 때까지 잘 작동합니다. 나는 다음과 같은 코드로 내 장면이 첨부 관리ScalaFX/JavaFX 스타일 시트가 완전히 위임되지 않았습니다

.label: { 
    -fx-font: 16px "Serif"; 
    -fx-padding: 5; 
} 

.root { 
    -fx-background: cornflowerblue; 
    -fx-fill: orchid; 
} 

: 나는 다음과 같은있는 style.css가

private val mainLayout = new BorderPane() {...} // stylesheet missing 
private val baseLayout = new StackPane() { // root element, has stylesheet 
    children.add(mainLayout) 
    ... 
} 
private val scene: Scene = new Scene(baseLayout) { 
    stylesheets.add("style.css") // stylesheet works, but I can only style root 
} 

루트 스타일링뿐만 아니라 작동하지만을 나는의 레이어를 통해 클릭하면 디버거 스타일 시트는 루트 요소 뒤에 사라집니다. 내 뿌리는 StackPane이고 그 안에는 BorderPane이 있습니다. BorderPane에는 이미 지정된 스타일 시트가 포함되어 있지 않습니다.

무엇이 누락 되었습니까? 나중에 요소를 추가 할 때 스타일 시트가 위임하지 않습니까? 스칼라의 매크로 확장에 대한 종속성 문제가 있었기 때문에 현재 장면 작성기를 사용하지 않습니다. 사전에 문제를 부셔


편집

에서

감사합니다 : 난 내 스타일 스타일링 루트 및 라벨을 가지고있다. 내 장면을 만듭니다

var label: Label = new Label() 
label.setText("Hello World!") 
private val root = new StackPane() { 
    children.add(label) 
} 
private val scene: Scene = new Scene(root) { 
    stylesheets.add("style.css") 
} 

루트 스타일의 작품을 라벨은 변경되지 않습니다. 나는이 (가) scalafx 라이브러리를 사용하고 enter image description here

그래서 내 모든 FX 유형은

+0

"루트 스타일링도 잘 작동하지만 디버거에서 레이어를 클릭하면 루트 요소 뒤에 스타일 시트가 사라집니다." 나는 이것이 의미하는 바를 얻지 못한다. – Jai

+0

처음 보았을 때, 스타일 시트는 루트의 스타일 시트 목록뿐만 아니라 루트의 스타일 시트에도 포함되어있었습니다. 방금 다시 시도했으나 루트에서 사라졌습니다. 스타일은 여전히 ​​작동하지만 루트 요소에만 적용됩니다. –

+1

스타일 시트가 자식 노드에 상속되지 않습니다. 스타일 시트가 자식 노드에 의해 상속 될 수있는 스타일 시트로 정의 된 스타일입니다. 정확한 문제가 무엇인지 설명하기 위해 이미지를 사용하는 것이 좋습니다. – Jai

답변

0

좋아이 라이브러리 (scalafx.scene.layout.Label, scalafx.scene.Scene 등)에서 있습니다. 죄송합니다. 오류를 발견했습니다 : 나는 CSS에있는 꼬리표 꼬리표 후에 콜론을 추가했다. 나는 IDEA 궁극적 인 판이 없다 그래서 아무 CSS 지원도, 저것은 나가주의하지 않은 저것이다. 이제 작동합니다. 올바른 CSS는 다음과 같아야합니다.

.label { 
    -fx-font: 16px "Serif"; 
    -fx-padding: 5; 
} 

.root { 
    -fx-background: cornflowerblue; 
    -fx-fill: orchid; 
} 
관련 문제