La Clase JInternal Frame
Por herencia la clase JInternalFrame y sus clases descendientes (subclases directas) pueden utilizar los datos y/o métodos de la superclase JComponent de la librería swing y de las superclases container , Component y Object de la librería awt .
Esta clase permite tener objetos livianos que proporcione muchas de las características de un frame, incluyendo el desplazamiento, cierre, inserción de íconos, redimensionamiento, título y soporte para un menú bar.
El contentPane es manejado por una instancia de la clase JRootPane, la cual maneja una distribución de objetos y opcionalmente un menú bar para el frame interno.
Se recomienda el uso de un JDesktopPane para colocar los frames internos .
I.- JERARQUÍA DE CLASES |
II.- MÉTODOS |
CONSTRUCTORES | ||
Constructor | Descripción | |
JInternalFrame () | Crea un frame interno no redimensionable, no cerrable, no maximizable, no iconificable y sin título. | |
JInternalFrame (String título) | Crea un frame interno no redimensionable, no cerrable, no maximizable, no iconificable y con el título indicado como parámetro. | |
JInternalFrame (String título ,boolean resizable) | Crea un frame interno no cerrable, no maximizable, no iconificable pero con título y redimensionable. | |
JInternalFrame (String título ,boolean resizable ,boolean closable ) | Crea un frame interno no maximizable, no iconificable pero con título, redimensionable y cerrable según los parámetros indicados. | |
JInternalFrame (String título ,boolean resizable ,boolean closable ,boolean maximizable ) | Crea un frame interno no iconificable pero con título, redimensionable, cerrable y maximizable según los parámetros indicados. | |
JInternalFrame (String título ,boolean resizable ,boolean closable ,boolean maximizable ,boolean iconificable) | Crea un frame interno con título, redimensionable ,cerrable, maximizable e iconificable. | |
MÉTODOS | ||
Tipo de retorno | Método | Descripción |
void | dispose( ) | Hace el frame interno invisible, no seleccionable y cerrado. |
Container | getContentPane( ) | Retorna el content Pane |
int | getDefaultCloseOperation( ) | Retorna el valor de la operación que ocurre cuando el usuario cierra el frame. |
Component | getFocusOwner( ) | Si el JInternalFrame es activo, retorna el elemento enfocado. |
Icon | getFrameIcon( ) | Retorna el icon mostrado en la línea de título del frame interno. |
JMenuBar | getJMenuBar( ) | Retorna el JMenuBar del frame interno , o nulo si no tiene. |
Component | getMostRecentFocusOwner() | Retorna el elemento del frame interno que recibió el enfoque cuando el frame estuvo seleccionado. |
String | getTitle( ) | Retorna el título. |
boolean | isClosable( ) | Retorna true si el frame interno es cerrable, de lo contrario retorna falso. |
boolean | isClosed( ) | Retorna true si el frame interno está cerrado , de lo contrario retorna false. |
boolean | isIcon( ) | Retorna true si el frame interno tiene ícono , de lo contrario retorna false. |
boolean | isMaximizable( ) | Obtiene el valor de la propiedad maximizable. |
boolean | isMaximum( ) | Retorna true si el frame interno está maximizado de lo contrario retorna false. |
boolean | isResizable( ) | Retorna true si el frame interno es redimensionable de lo contrario retorna false. |
boolean | isSelected( ) | Retorna true si el frame interno está seleccionado de lo contrario retorna false. |
void | remove(Component comp) | remueve el componente dado como parámetro de su contenedor. |
void | reshape(int x, int y, int ancho,int alto) | Mueve y redimensiona al frame interno según el valor de los parámetros dados. |
void | setClosable(boolean b) | Hace cerrable al frame interno si el valor del parámetro es true. |
void | setClosed(boolean b) | Cierra el frame interno si el valor del parámetro dado es true. |
void | setDefaultCloseOperation(int operation) | Define la operación que debe suceder por defecto cuando el usuario cierra el frame interno. El valor por defecto es HIDE_ON_CLOSE. Otros posibles valores son DO_NOTHING_ON_CLOSE y DISPOSE_ON_CLOSE |
void | setFrameIcon(Icon icono) | Establece el icono en el frame interno. |
void | setJmenuBar(JMenuBar menu) | Establece la barra de menú del frame interno con el menú dado como parámetro. |
void | setLayout(LayoutManager manager) | Establece una distribución diferente a la establecida por defecto. |
void | setMaximizable(boolean b) | Establece la propiedad maximizable a través del valor dado como parámetro. |
void | setMaximum(boolean b) | Maximiza el frame interno. |
void | setResizable(boolean b) | Establece la propiedad resized a través del valor dado como parámetro. |
void | setSelected(boolean selected) | Selecciona o deselecciona el frame interno, según el valor del parámetro. |
void | setTitle(String título) | Establece el título del frame interno. |
void | show( ) | Muestra el frame interno. |
void | toBack( ) | Envía el frame interno hacia adelante. |
void | toFront( ) | Envía el frame interno hacia adelante. |
III.- EJEMPLOS |
- Diseñe una aplicación que permita, a través de un botón colocar frame internos dentro del frame principal. Por cada frame que se crea debe asignarse un número correlativo. En la parte inferior colocar otro botón para cerrar todos los frames que fueron cerrados.
- Creamos un nuevo proyecto al cual le agregamos un paquete y a este paquete le agregamos un JFrame Form de nombre Principal (Para ver como crear un proyecto con NetBeans visitar esta entrada).
- A este frame le daremos la propiedad de BorderLayout , para ello clic en el frame → SetLayout → BorderLayout ( si deseas saber mas sobre los layout visita este enlace ) ; una vez hecho esto colocaremos un JScrollPane en el centro ( para ello en la parte izquierda del NetBeans buscamos el JScroolPane y lo arrastramos al centro del frame ) y encima de el JScrollPane colocamos el JDesktopPane ; luego colocamos dos botones uno en el norte y otro en el sur ; así debe quedar el proyecto :
- Una vez creada la interfaz, vamos a crear la lógica del programa : vamos a la pestaña Source para ir al código fuente y declaramos dos variables ( un contador y una posición inicial – lacual va a ser la posición en la cual aparecerá el primer JInternal Frame)
public class Principal extends javax.swing.JFrame {
private int contador=1;
private int posicion=0;
public Principal() {
initComponents();
setSize(400,400);}
- Regresamos al diseño y hacemos doble clic en el botón Crear para programar la acción (nos llevará al método private void btnCreaActionPerformed(java.awt.event.ActionEvent evt) en la cual colocaremos lo siguiente :
private void btnCreaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
creaInternalFrame();
}
public void creaInternalFrame(){
JInternalFrame f = new JInternalFrame("InternalFrame "+contador,
true, // cambia tamaño
true, // se cierra
true, // maximizable
true // minimizable
);
f.setLocation(posicion*50 + 10, posicion*50+10);
desktop.setPreferredSize(new Dimension(400+(posicion*50), 400+(posicion*50)));
f.setSize(200,150);
f.setBackground(new Color(200,255,255));// color de fondo
desktop.add(f); // coloca en el desktop
f.setVisible(true); // lo hace visible en primer plano
contador++;
posicion++;}
- Ahora regresamos al diseño para darle la lógica al botón cerrar :
private void btnCierraActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
desktop.removeAll();
desktop.repaint();
contador=1;
posicion=0;}
- Hecho esto obtendremos lo siguinente :
- Si desean descargar el ejemplo visiten mi sitio en Skydrive (donde podrán encontrar mas ejemplos – En el menú de arriba encontrarán el enlace - ) o simplemente denle clic al boton descargar :
- Creamos un nuevo proyecto al cual le agregamos un paquete y a este paquete le agregamos un JFrame Form de nombre Principal (Para ver como crear un proyecto con NetBeans visitar esta entrada).
7 Comentarios:
ME PARECE QUE FALTARON LAS LIBRERIAS
Uyyesta muy bueno pero quisiera saber como se llama un jinternalframe des de un jmenubar. y como puedo utilizar un desktoppane..
ojala y me puedan ayudar...
Hola, muy buena ayuda.
Una pequeña observacion, el metodo isIcon() devuelve true si el JInternalFrame esta minimizado o false si no lo está.
Saludos
void setIconifiable(boolean)
boolean isIconifiable()
Establece y obtiene, respectivamente, si el usuario puede minimizar el frame interno.
hey esta muy bueno pero para que sirve desktop o q libreria tienes que mandar a llamar para que no te genere un error me da error en todas la lineas que contiene desktop si me puedes ayudar te lo agradecere mucho
Excelentes ejemplos gracias por compartir
muy util la informacion me parecio muy interezante
Publicar un comentario
Ingresa tu comentario .... con el siguiente formato EMAIL - COMENTARIO para poder responderte :