2016-10-03 3 views
0

У меня есть приложение JavaFX с файлом FXML и назначенным классом Java для работы в качестве контроллера для этого FXML. Как связать атрибут класса с значением в FXML? Например:Ссылка на атрибут класса контроллера в FXML

Мой класс контроллера:

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

А следующий FXML:

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

Если бы я сделал выше, fx:value будет связываться с буквальным "MyController.myString". Как связать его со статической переменной I, установленной в контроллере?

ответ

1

Вы можете использовать

<MyController fx:constant="myString"/> 

(если у вас есть соответствующий импорт для вашего класса контроллера в файле FXML). Я не тестировал, но вам, вероятно, нужно сделать myString финал.


Если вы хотите связать с чем-то переменной, т.е. не является постоянной, вы можете определить свойство в самой FXML:

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

и привязать его к чему-то

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

и, конечно, вы можете ввести его в контроллер, как и любое другое значение:

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); 
    } 

    // ... 
} 
Смежные вопросы