Ejemplo sencillo con JInternalFrame
Un JInternalFrame es una ventana que va metida dentro de un panel y no puede salirse de él. En java el panel adecuado y especializado en el manejo de JInternalFrame es el JDesktopPane.
Vamos a hacer un ejemplo sencillo de uso. El siguiente código crea un JFrame con un JDesktopPane dentro. Luego se crea una ventana JInternalFrame que tiene un JLabel y un JTextField. El JInternalFrame se mete dentro del JDesktopPane y se visualiza todo.
Es importante darle tamaño al JInternalFrame, ya que si no, no lo veremos -tiene tamaño 0,0-. Por defecto el JInternalFrame no es redimensionable, ni se puede cerrar ni tiene botones de maximizar y minimizar. Tendremos que decirle con los métodos adecuados si queremos que tenga esas características. También es importante hacer visible a posta el JInternalFrame, ya que por defecto es oculto.
/**
* Ejemplo de uso de un JInternalFrame
*/
package chuidiang.ejemplos;
import java.awt.FlowLayout;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
/**
* Instancia un JFrame con un JDesktopPane y dentro de este
* un JInternalFrame.
* @author chuidiang
*
*/
public class PruebaInternalFrame {
/** Instancia esta clase */
public static void main(String[] args) {
new PruebaInternalFrame();
}
/**
* Crea el JFrame, el JDesktopPane, un JInternalFrame de
* muestra y lo visualiza.
*/
public PruebaInternalFrame()
{
// El JFrame con el JDesktopPane
JFrame v = new JFrame("Prueba JInternalFrame");
JDesktopPane dp = new JDesktopPane();
v.getContentPane().add(dp);
// Se construye el panel que ira dentro del JInternalFrame
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.add (new JLabel("Una etiqueta"));
p.add (new JTextField(10));
// Se construye el JInternalFrame
JInternalFrame internal = new JInternalFrame("Un Internal Frame");
internal.add(p);
// Es importante darle tamaño -pack()- al JInternalFrame,
// porque si no, tendrá tamaño 0,0 y no lo veremos.
internal.pack();
// Por defecto el JInternalFrame no es redimensionable ni
// tiene el botón de cerrar, así que se lo ponemos.
internal.setResizable(true);
internal.setClosable(true);
// Se mete el internal en el JDesktopPane
dp.add(internal);
// Se visualiza todo.
v.setSize(500,500);
v.setVisible(true);
v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// Se visualiza el JInternalFrame
internal.setVisible(true);
}
}