2016-07-03 4 views
1

JavaFX FXML로 작업하고 있는데 CSS로 스타일을 지정하는 데 문제가 있습니다.스타일 레이아웃 변수를 만들지 않고 JavaFX FXML이있는 CSS의 패닝?

내 루트 노드에 GridPane이 있는데 배경 스타일을 지정하고 싶습니다. GridPane 자체는 Java 코드 (@FXML)에서 언급되지 않았습니다. 코드에서 전혀 사용되지 않았기 때문입니다.

그러나, 지금 응용 프로그램을 스타일링 그리고 난이 Oracle's Official Guide of Styling Layout Panes with CSS에서 얻을 수있는 것은 내가 그렇게 같은 변수를 만들어야한다는 것입니다 : GridPane grid = new GridPane(); 다음 변수를 스타일을 할당 진행과 같이 :

.grid { 
    -fx-background-color: white; 
    -fx-background-radius: 5.0; 
    -fx-background-insets: 0.0 5.0 0.0 5.0; 
    -fx-padding: 10; 
    -fx-hgap: 10; 
    -fx-vgap: 10; 
} 

그런 다음 스타일을 추가하십시오 (예 : grid.getStyleClass().add("grid");).

프로젝트 전체에서 여러 장면에서 복수 GridPane을 가지고 있기 때문에 이것은 실현할 수없는 해결책이며, 모든 변수를 수동으로 만들 필요가 없습니다.

버튼을 스타일링하는 것과 비슷한 해결책이 있습니까? (참조

.button{ 
    -fx-text-fill: rgb(49, 89, 23); 
    -fx-border-color: rgb(49, 89, 23); 
    -fx-border-radius: 5; 
    -fx-padding: 3 6 6 6; 
} 
+0

[GridPane-Doc] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/GridPane.html) : GridPane은 CSS를 사용하여 배경 및 테두리 스타일을 지정할 수 있습니다 . 자세한 내용은 [Region] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/Region.html) 수퍼 클래스를 참조하십시오. 그리고 지역을위한 CSS는 [여기] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#region)입니다. 그러나 지역을 변화시키는 것은 좋은 조언이 아닙니다. 그래서 당신의 솔루션은 상당히 훌륭합니다. 아마도 루프에 클래스를 추가해야 할 것입니다. – NwDev

+0

GridPane에는 기본적으로 스타일 클래스가 없으므로 수동으로 스타일 클래스를 추가해야합니다. – Kachna

+0

@Kachna 어떻게 그럴 수 있습니까? – Berry

답변

2

GridPane는 자신 만의 스타일 클래스를 가지고 있지 않습니다

A 버튼은 대한 변수를 만들 필요없이 스타일을 지정할 수 있고, 자동과 같이, 현장에 모든 버튼의 스타일을합니다 CSS reference)하지만, 마찬가지로 HTML에서 선택기에 태그를, Node들 자신의 자바 클래스에 의해 선택할 수 있습니다 또한 IS styleClass 이후 FXML에서 스타일 클래스를 추가 할 수 있습니다

GridPane { 
    -fx-background-color: white; 
    -fx-background-radius: 5.0; 
    -fx-background-insets: 0.0 5.0 0.0 5.0; 
    -fx-padding: 10; 
    -fx-hgap: 10; 
    -fx-vgap: 10; 
} 

는입니다 16,395,: 하나의 스타일 클래스

약식 : 여러 스타일 클래스

<GridPane styleClass="grid"> 
    ... 

긴 형태 :

<GridPane> 
    <styleClass> 
      <String fx:value="grid"/> 
      <String fx:value="myclass"/> 
    </styleClass> 
    ... 

그것은 속성에서 스타일 클래스를 추가 SceneBuilder에서 볼 수있다.