JInternalFrame (Frame dentro de otro Frame)

   Bueno, la verdad es que muchas personas al momento de desarrollar un sistema crean y crean formularios, utilizando ventanas separadas, cosa que no es muy agradable para el usuario, aunque en lo personal lo prefiero así no puede negarse que la estética del trabajo se ve afectada por esto.

   Para cambiar esto deberemos utilizar los "Frames Internos", estos son unos paneles que se abren dentro de un panel principal, aunque existe otro componente que también se maneja de igual forma hoy explicare este, probemos el siguiente código:
import javax.swing.*;
import java.awt.event.*;

@SuppressWarnings("deprecation")
public class internalframe extends JFrame {
 boolean boton=false;
 JDesktopPane dp = new JDesktopPane();
 JPanel Panel1 =new JPanel();
 JPanel Panel2 =new JPanel();
 JPanel Panel3 =new JPanel();
 JInternalFrame iPanel1 = new JInternalFrame("iFrame 1");
 JInternalFrame iPanel2 = new JInternalFrame("iFrame 2");
 JInternalFrame iPanel3 = new JInternalFrame("iFrame 3");
 JTextField TEXTO = new JTextField(25);
 JButton BOTON = new JButton("Cerrar");
 JLabel expli1 = new JLabel("Escribe 'cerrar' para cerrar el iFrame");
 JLabel expli2 = new JLabel("Este se puede minimizar");
 JLabel expli3 = new JLabel("Este es puede cerrar");
 JMenuBar B = new JMenuBar();
 JMenu MENU = new JMenu("Click Aquí");
 JMenuItem M1 = new JMenuItem("Abrir Ventana 1");
 JMenuItem M2 = new JMenuItem("Abrir Ventana 2");
 JMenuItem M3 = new JMenuItem("Abrir Ventana 3");

 public internalframe() {
  super("Ejemplo de MDI");
  setLocation(100,100);
  setSize(640,480);
  setJMenuBar(B);
  add(dp);
  B.add(MENU);
  MENU.add(M1);
  MENU.add(M2);
  MENU.add(M3);
  dp.add(iPanel1);
  dp.add(iPanel2);
  dp.add(iPanel3);
  Panel1.add(expli1);
  Panel1.add(TEXTO);
  Panel2.add(expli2);
  Panel2.add(BOTON);
  Panel3.add(expli3);
  iPanel1.add(Panel1);
  iPanel2.add(Panel2);
  iPanel3.add(Panel3);
  iPanel1.pack();
  iPanel2.pack();
  iPanel3.pack();
  TEXTO.addKeyListener(new Comprobar());
  BOTON.addActionListener(new Cerrar());
  M1.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent evt) {
  iPanel1.setVisible(true);
   }
  });
  M2.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent evt) {
  iPanel2.setVisible(true);
   }
  });
  M3.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent evt) {
  iPanel3.setVisible(true);
   }
  });
  iPanel1.setResizable(true);
  iPanel2.setIconifiable(true);
  iPanel3.setClosable(true);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  show();
 }

 public class Comprobar extends KeyAdapter{
  public void keyTyped ( KeyEvent evt ){
   if(TEXTO.getText().equalsIgnoreCase("cerrar"))
 iPanel1.setVisible(false);
  }
 }

 public class Cerrar implements ActionListener{
   public void actionPerformed(ActionEvent evt){
 iPanel2.setVisible(false);
  }
 }

 public static void main(String[] arg) {
  JOptionPane.showMessageDialog(null,"Ejemplo de MDI...\n");
  JOptionPane.showMessageDialog(null,"By Carlitox ("+
   "http://calitoxenlaweb.blogspot.com)");
  new internalframe();
 }
}
   Lo mas importante a resaltar es que siempre que queramos utilizar el estilo modal de ventanas internas utilicemos estos frames internos, también podemos configurarle los parámetros para el estilo de la ventana, en el ejemplo vemos los 3 iFrame con 3 parámetros diferentes, uno es cambiar tamaño, otro maximizar y minimizar, y el otro cerrar.

1 Comentarios:

Escribir Comentario
Anónimo
AUTOR
31 de diciembre de 2012, 21:59 delete

GRACIASSSSSSSS DESDE COLOMBIA

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión EmoticonEmoticon