¿Cómo accedo a un elemento de la IU desde otra clase de controlador en JavaFX?
Tengo una aplicación JavaFX / Java 8 escrita con NetBeans 8 (noSceneBuilder
)
Mi aplicación tiene una ventana principal que tiene su propio archivo FXML (primary.fxml) y su propia clase de controlador (FXMLPrimaryController.java). Uno de los elementos en FXML es unTextArea
. Algunos de los métodos en FXMLPrimaryController.java tratan de agregar a esoTextArea
.
Esta aplicación ahora genera una segunda ventana (otra "etapa") con su propio FXML (second.fxml) y su propia clase de controlador (FXMLsecondController.java).
Dentro de la segunda clase de controlador, ¿cómo puedo acceder a TextArea en el primario?
Aquí hay una muestra del código relevante:
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();
}
}
No hay nada de lujos en second.fxml. Supongamos que hay un botón cononAction="#writeSomething"
.
En FXMLsecondController.java, me gustaría una función que haga referencia a lo anteriorTextArea
.