Como Abrir Un JInternalFrame desde otro JInternalFrame

Este es un problema que se me presento durante el desarrollo de un sistema, busque información y encontré algo que me sirvió mucho.
Bueno para esto necesitaras tener creada la case principal o el Frame principal y 2 InternalFrames. El el Frame principal añadiremos la siguiente clase:


class validador {
  
    public static java.util.HashMap<String, javax.swing.JInternalFrame> jIframes;
    jIframes = new java.util.HashMap<String, javax.swing.JInternalFrame>();
 
    public static void addJIframe(String key, javax.swing.JInternalFrame jiframe)
    {
        jIframes.put(key, jiframe);
    }
 
    public static javax.swing.JInternalFrame getJInternalFrame(String key)
    {
        return jIframes.get(key);
    }
}
Atención: Esta clase va después del corchete que finaliza el Frame principal. También necesitamos que nuestro JDesktopPane sea declarado como publico y estático:
public static javax.swing.JDesktopPane jDesktopPane1;
Y necesitaremos un Geter del mismo:

public static JDesktopPane getjDesktopPane(){
 return jDesktopPane1;
}
Una ves listo esto creamos el evento del boton que llama al segundo InternalFrame:

private ActionListener getButtonActionListener(){
    return new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            JInternalFrame ji; 
            ji = validador.getJInternalFrame(jInternalFrame2.class.getName());
            if(ji == null || ji.isClosed()){
                ji = new jInternalFrame2();
                Frame1.getjDesktopPane().add(ji);
                validador.addJIframe(jInternalFrame2.class.getName(), ji);
            }
            ji.setVisible(true);
        }
    };
}
Listo con esto terminamos y esta resuelto nuestro problema :D Y como de costumbre les dejo el código fuente para que lo estudien:

0 comentarios: