#java #javafx #fxml
#java #javafx #fxml
Вопрос:
У меня есть приложение JavaFX с файлом FXML и назначенным классом Java, который будет выступать в качестве контроллера для этого 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"
. Как мне привязать его к статической переменной, которую я установил в контроллере?
Ответ №1:
Вы можете использовать
<MyController fx:constant="myString"/>
(при условии, что у вас есть соответствующий импорт для вашего класса контроллера в файле FXML). Я не тестировал, но вам, вероятно, нужно сделать myString
final.
Если вы хотите привязать к чему-то переменному, то есть не к константе, вы можете определить свойство в самом 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);
}
// ...
}