es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo obtener una instancia en otra clase en Java?

Estoy aprendiendo JavaFX pero no puedo entender cómo obtener una instancia que creé en otro controlador en mi nuevo controlador.

Clase de Auto

package com.example.test1;

public class Auto {
    private static String merk;
    private static double prijs;

    public Auto(String merk, double prijs) {
        this.merk = merk;
        this.prijs = prijs;
    }

    public String getMerk() {
        return merk;
    }

    public double getPrijs() {
        return prijs;
    }
}

Mi controlador de mi archivo fxml principal

import java.io.IOException;

public class Controller {

    public Label random;
    public Button btn1;
    public static Auto auto;

    public void maakNieuweAuto() {
        auto = new Auto("bmw", 900);
    }

    public void button() throws IOException {
        Parent root = FXMLLoader.load(getClass().getResource("Auto.fxml"));
        Stage window = (Stage) btn1.getScene().getWindow();
        window.setScene(new Scene(root, 750, 500));
    }
}

Mi controlador de mi segundo fxml

package com.example.test1;

import javafx.scene.text.Text;

import static com.example.test1.Controller.auto;

public class AutoController {

    public Text Merk;
    public Text Prijs;

    public AutoController() {
        Merk.setText(auto.getMerk());
        Prijs.setText("" + auto.getPrijs());
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener una instancia creada en otro controlador en un nuevo controlador en JavaFX, puedes seguir los siguientes pasos:

    1. En el controlador original donde se crea la instancia, asegúrate de que la instancia esté declarada como estática.
    2. Importa el controlador original al nuevo controlador.

    3. Declara una variable en el nuevo controlador del mismo tipo que la instancia en el controlador original.

    4. En el método de inicialización del nuevo controlador, asigna la instancia original a la variable del nuevo controlador.

    En los fragmentos de código dados, la instancia de la clase ‘Auto’ se declara como estática en la clase ‘Controller’. Para obtener esta instancia en la clase ‘AutoController’, ya se ha hecho la declaración de importación.

    Para declarar una variable de la clase ‘Auto’ en la clase ‘AutoController’, puedes usar:

    private Auto autoInstance;
    

    Y para asignar la instancia original a esta variable, puedes usar el método ‘initialize’ de la clase ‘AutoController’:

    public void initialize() {
        autoInstance = Controller.auto;
        // usa autoInstance para acceder a la instancia de la clase Auto
    }
    

    Al hacer esto, puedes acceder a la instancia de la clase ‘Auto’ creada en la clase ‘Controller’ dentro de la clase ‘AutoController’.

Comments are closed.