Cita:
Iniciado por sonicJava No, no se puede hacer lo que dices, es una restricción del lenguaje, puedes crear objetos de manera dinámica, pero variables con un nombre en específico, no.
Y eso como para que?, mejor plantea tu problema y tal vez, exista otra solución.
saludos!!!
Ok. deja ver si me puedo dar a entender es un poco complejo pero voy a intentarlo.
Lo que pasa es que tengo 16 JInternalFrames' diferentes y cada una se activa desde el JMenuBar ahora lo que quiero hacer para cada un JInternalFrame es esto:
//Variables de clase
JInternalFrame jInternalFrame1 = null;
JInternalFrame jInternalFrame2 = null;
.
.
.
JInternalFrame jInternalFrame16 = null;
JDesktopPane desktop = new JDesktopPane();
----------------------------------
El siguiente código va dentro del metodo actionPerformed() y si lo observan bien se repetirá 16 veces una para cada JInternalFrame
if(evento.getSource() == jMenuItem1){ //Si el origen del evento tuvo lugar en el jMenuItem1 entonces...
if(jInternalFrame1 == null){ //Sí no se ha instanciado el objeto 'jInternalFrame1' entonces...
//Se instancia el objeto con otra clase y en esta clase se define el método setDefaultCloseOperation(HIDE_ON_CLOSE)
//De modo que si el objeto ya esta en memoria pero oculto, no crea otro solo lo hace visible mas adelante
jInternalFrame1 = new OtraClaseConExtendsJInternalFrame;
desktop.add(jInternalFrame1);//Y lo agregamos al JDesktopPane
}
jInternalFrame1 .setVisible(true);//Lo hacemos visible
}
Entonces lo que intento es colocar el código en un método que con solo mandarlo a llamar ejecute el codigo para el correspondiente JInternalFrame.
Ejemplo:
if(evento.getSource() == jMenuItem1){ mostrar() }//Aquí que muestre el jInternalFrame1
if(evento.getSource() == jMenuItem2){ mostrar() }//Aquí que muestre el jInternalFrame2
if(evento.getSource() == jMenuItem3){ mostrar() }//Aquí que muestre el jInternalFrame3
El metodo mostrar() quedaría algo así:
mostrar(){
if(jInternalFrameDestinado == null){ //Sí no se ha instanciado el objeto 'jInternalFrame1' entonces...
jInternalFrameDestinado = new OtraClaseConExtendsJInternalFrame;//Se instancia el objeto
desktop.add(jInternalFrame1);//Y lo agregamos al JDesktopPane
}
jInternalFrameDestinado .setVisible(true);//Lo hacemos visible
}
Obviamente le debo mandar un parametro al método mostrar() para que actue sobre el JInternalFrame deseado, pero no sé como hacerlo.