Как получить доступ к элементу пользовательского интерфейса из другого класса контроллера в JavaFX?
У меня есть приложение JavaFX / Java 8, написанное с использованием NetBeans 8 (нетSceneBuilder
).
Мое приложение имеет главное окно, которое имеет свой собственный файл FXML (primary.fxml) и свой собственный класс контроллера (FXMLPrimaryController.java). Одним из элементов в FXML являетсяTextArea
, Некоторые из методов в FXMLPrimaryController.java предназначены для добавления к этомуTextArea
.
Это приложение теперь порождает второе окно (еще один «этап») со своим собственным FXML (second.fxml) и собственным классом контроллера (FXMLsecondController.java).
Во втором классе контроллера, как я могу получить доступ к TextArea в основной?
Вот пример соответствующего кода:
primary.fxml:
<Button text="press me!" onAction="#openSecondWindow" />
<TextArea fx:id="myArea" />
FXMLPrimaryController.java:
public class FXMLPrimaryController implements Initializable {
@Override
public void initialize(URL url, ResourceBundle rb) {
}
@FXML private TextArea myArea;
final public void writeToTextArea() {
myArea.appendText("hi!");
}
@FXML
private void openSecondWindow(ActionEvent event) throws Exception {
Group root = new Group();
Stage stage = new Stage();
AnchorPane frame = FXMLLoader.load(getClass().getResource("second.fxml"));
root.getChildren().add(frame);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
В second.fxml нет ничего особенного. Предположим, есть кнопка сonAction="#writeSomething"
.
В FXMLsecondController.java я хотел бы функцию, которая ссылается на вышеTextArea
.