2016-10-03 2 views
0

Ich habe eine JavaFX-Anwendung mit einer FXML-Datei und einer designierten Java-Klasse, die als Controller für diesen FXML fungiert. Wie würde ich ein Klassenattribut an einen Wert in der FXML binden? Zum Beispiel:Verweis auf ein Controller-Klassenattribut in der FXML

Meine Controller-Klasse:

public class MyController{ 
    ... 
    @FXML 
    static String myString = "this is text"; 
    ... 
} 

Und die folgende FXML:

<Pane fx:controller="MyController"> 
    ... 
    <String fx:value="MyController.myString"> 
    ... 
</Pane> 

Wenn ich die oben tue, die fx:value an die wörtlichen "MyController.myString" binden würde. Wie binde ich es an die statische Variable, die ich im Controller eingestellt habe?

Antwort

1

können Sie

<MyController fx:constant="myString"/> 

(vorausgesetzt, Sie für Ihre Controller-Klasse in der FXML Datei über den entsprechenden Import) verwenden. Ich habe nicht getestet, aber Sie müssen wahrscheinlich myString endgültig machen.


Wenn Sie etwas Variable binden möchten, also nicht eine Konstante ist, Sie eine Immobilie in der FXML definieren sich:

<fx:define> 
    <SimpleStringProperty fx:id="myString" /> 
</fx:define> 

und binden Sie es an etwas

<Label text="${myString}" /> 

und natürlich können Sie es in den Controller wie jeder andere Wert injizieren:

public class MyController { 

    @FXML 
    private StringProperty myString ; 

    public StringProperty myStringProperty() { 
     return myString ; 
    } 

    public final String getMyString() { 
     return myStringProperty().get(); 
    } 

    public final void setMyString(String myString) { 
     myStringProperty().set(myString); 
    } 

    // ... 
} 
Verwandte Themen