¿Cómo puede el código usar un objeto dentro de un botón?
Tengo un problema. Quiero usar mi objeto que está fuera de un botón, y obtengo un mensaje de error:
La variable local está definida en un ámbito de cierre y debe ser final o efectivamente final
File inputfile = new File("./input.txt");
testobject to = null;
try {
Scanner inputscan = new Scanner(inputfile);
String text1 = inputscan.nextLine();
String text2 = inputscan.nextLine();
to = new testobject(text1, text2);
inputscan.close();
} catch (Exception e) {
System.err.println(e);
}
JButton btnSave = new JButton("Guardar");
btnSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
to.setSomething("test");
}
});
Obviamente, tengo una clase con un constructor, etc., pero tengo un problema para acceder a mi objeto dentro del botón.
davy.ai
El mensaje de error “La variable local definida en un ámbito cerrado debe ser final o efectivamente final” se debe al hecho de que la variable “to” no está definida como final o efectivamente final. Esto significa que no se puede acceder a ella desde la clase interna anónima (el ActionListener) del botón, debido a que tiene un ámbito diferente.
Para solucionar este problema, puede definir la variable “to” como final o efectivamente final, lo que significa que su valor no se puede cambiar después de asignado.
Aquí hay un ejemplo de cómo hacerlo:
Alternativamente, puede convertir “to” en una variable de instancia de su clase, de manera que se pueda acceder desde cualquier parte dentro de la clase, incluyendo el botón ActionListener.
En este caso, llamaría al método setup() para crear el botón y asignar un valor a la variable “to”.