Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/03/2010, 14:35
Sanyi17
 
Fecha de Ingreso: marzo-2010
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Respuesta: Se puede crear un objeto con el nombre del contenido de una variable Strin

Cita:
Iniciado por sonicJava Ver Mensaje
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.