Is it possible to set a JavaFX static property in

2019-02-25 10:52发布

问题:

Sample FXML with the BorderPanel.alignment "static property":

<BorderPane>
  <top>
    <Label text="My Label" BorderPanel.alignment="CENTER"/>           
  </top>
</BorderPane>

The CSS-supported version:

<BorderPane stylesheets="Style.css">
   <top>
     <Label text="My Label" styleClass="labelClass"/>           
   </top>
</BorderPane>

Style.css would be:

.labelClass
 {
   -fx-borderpanel-alignement: center
 }

回答1:

For JavaFX versions 2.0 to 2.2 => no you cannot set the static layout properties via css.

You can create a feature request in the JavaFX jira to ask this functionality be implemented in a future JavaFX version.



回答2:

You can apply it programatically. For example if you want to center all the widgets of a GridPane, instead of writing GridPane.halignment="CENTER" in the XML declaration of each widget, you can do this in Java :

for(Node node : gridPane.getChildren())
{
    GridPane.setHalignment(node, HPos.CENTER);
}

Unfortunately I don't think you can factorize layouts as in Android :(