Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

383
Vistas
¿Cómo puedo hacer que JavaFX se reinicie cuando se cambia la escena?

Quiero hacer un programa muy simple en JavaFX. Dice así:

El usuario ingresa algo en un TextField

El programa muestra la entrada en una etiqueta pero en una Escena diferente


Aquí está mi código:

Controlador.java

 package sample; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.stage.Stage; import javax.xml.soap.Text; import java.io.IOException; public class Controller { //textField in sample.fxml @FXML TextField textField; //label in display.fxml @FXML Label label; String text; @FXML public void enter() throws IOException { text = textField.getText(); Stage stage = (Stage) (textField).getScene().getWindow(); Parent root = FXMLLoader.load(getClass().getResource("display.fxml")); stage.setResizable(false); stage.setTitle("Display"); stage.setScene(new Scene(root, 300, 275)); label.setText(text); } }

Principal.java

 package sample; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception{ Parent root = FXMLLoader.load(getClass().getResource("sample.fxml")); primaryStage.setTitle("Hello World"); primaryStage.setScene(new Scene(root, 300, 275)); primaryStage.show(); } public static void main(String[] args) { launch(args); } }

Hay otros 2 archivos FXML que contienen un solo campo de texto o una sola etiqueta.

Pero cada vez que ejecuto este código hay una NullPointerException que indica que la etiqueta es nula porque no se ha inicializado. ¿Cómo puedo solucionar esto?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Creo que deberías hacer otro controlador para el archivo display.fxml (la otra escena). Que en este nuevo controlador puede preparar una función para establecer el valor de la etiqueta:

DisplayController.java

 public class DisplayController { //label in display.fxml @FXML Label label; public void setLabelText(String s){ label.setText(s); } }

y en Controller.java edite la función enter() llamando a una nueva instancia de DisplayController.java :

 @FXML public void enter() throws IOException { text = textField.getText(); Stage stage = (Stage) (textField).getScene().getWindow(); FXMLLoader loader = new FXMLLoader.load(getClass().getResource("display.fxml")); Parent root = loader.load(); DisplayController dc = loader.getController(); //here call function to set label text dc.setLabelText(text); stage.setResizable(false); stage.setTitle("Display"); stage.setScene(new Scene(root, 300, 275)); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda