formularios mdi

14
FORMULARIOS MDI –PROCEDIMIENTOS ALMACENADOS Los programas de ordenador gráficos de Interfaz de Múltiples Documentos (MDI) son aquellos cuyas ventanas se encuentran dentro de una ventana padre (normalmente con la excepción de las ventanas modales), de manera opuesta a una interfaz de documento único o SDI. Ha habido muchos debates sobre qué tipo de interfaz se prefiere. Generalmente se considera que SDI es más útil si los usuarios trabajan con varias aplicaciones. Las compañías han utilizado ambos sistemas con reacciones diversas. Por ejemplo, Microsoft ha cambiado la interfaz de sus aplicaciones Office de SDI a MDI y luego otra vez a SDI, aunque el grado de implementación varía entre componentes. La principal desventaja de MDI es la escasez de información sobre las ventanas abiertas: Para ver una lista de ventanas abiertas de una aplicación MDI, el usuario normalmente tiene que seleccionar un menú específico ("lista de ventanas" o algo parecido), si esta opción está disponible. Con una aplicación SDI, la barra de tareas del administrador de ventanas muestra las ventanas abiertas actualmente. En los últimos años, las aplicaciones han añadido barras de tareas o sistemas de pestañas a las aplicaciones MDI, lo que ha hecho obsoleta esta crítica. Algunas personas usan un nombre distinto para este tipo de interfaz, "interfaz de pestañas" (TDI). Cuando se usa pestañas para controlar las ventanas, estas normalmente no se pueden cambiar de tamaño por separado. Creando un formulario MDI En nuestro proyecto ya tenemos un formulario JFrame denominado “ventanaPrincipal”, pero para efectos didácticos vamos a crear uno nuevo y al final eliminaremos el Jframe anterior. 1. Click derecho en nuestro paquete por defecto -> Nuevo -> JFrameForm.

Upload: alexzhitoxd

Post on 29-Nov-2015

160 views

Category:

Documents


0 download

TRANSCRIPT

FORMULARIOS MDI –PROCEDIMIENTOS ALMACENADOS

Los programas de ordenador gráficos de Interfaz de Múltiples Documentos (MDI) son aquellos cuyas ventanas se encuentran dentro de una ventana padre (normalmente con la excepción de las ventanas modales), de manera opuesta a una interfaz de documento único o SDI. Ha habido muchos debates sobre qué tipo de interfaz se prefiere. Generalmente se considera que SDI es más útil si los usuarios trabajan con varias aplicaciones. Las compañías han utilizado ambos sistemas con reacciones diversas. Por ejemplo, Microsoft ha cambiado la interfaz de sus aplicaciones Office de SDI a MDI y luego otra vez a SDI, aunque el grado de implementación varía entre componentes.La principal desventaja de MDI es la escasez de información sobre las ventanas abiertas: Para ver una lista de ventanas abiertas de una aplicación MDI, el usuario normalmente tiene que seleccionar un menú específico ("lista de ventanas" o algo parecido), si esta opción está disponible. Con una aplicación SDI, la barra de tareas del administrador de ventanas muestra las ventanas abiertas actualmente. En los últimos años, las aplicaciones han añadido barras de tareas o sistemas de pestañas a las aplicaciones MDI, lo que ha hecho obsoleta esta crítica. Algunas personas usan un nombre distinto para este tipo de interfaz, "interfaz de pestañas" (TDI). Cuando se usa pestañas para controlar las ventanas, estas normalmente no se pueden cambiar de tamaño por separado.

Creando un formulario MDIEn nuestro proyecto ya tenemos un formulario JFrame denominado “ventanaPrincipal”, pero para efectos didácticos vamos a crear uno nuevo y al final eliminaremos el Jframe anterior.

1. Click derecho en nuestro paquete por defecto -> Nuevo -> JFrameForm.

2. Next, Colocamos un nombre nuestro formulario MDI “formulario_MDI”. Luego click en Finish.

3. Añade los objetos JMenuBar, JMenuItem y JDesktopPane, este último es una subclase de JLayeredPane que nos permite manipular frames interno. También para agregar un menu puede hacer clic derecho sobre la barra de menú y seleccionar “Add menu”

Para que el JdesktopPane cubra todo el área del Frame hacer click derecho sobre él, seleccionar Auto Resizing/ activar horizontal y vertical. Arrastrar a la esquina superior izquierda hasta conseguir se adapte al tamaño interior del frame.

4. Ahora para insertar el frame interno, nos dirigimos al paquete de nuestro proyecto, hacemos clic derecho y escogemos NEW -- OTHER -- en la ventana que nos aparece, buscamos SWING GUI FORMS luego JINTERNALFRAME, presionas siguiente y coloca un nombre al form, "texto_filmico" y para terminar FINISH

5. Realiza este paso una vez más, para insertar el formulario Dialog, nos dirigimos al paquete de nuestro proyecto, hacemos clic derecho y escogemos NEW -- OTHER -- en la ventana que nos aparece, buscamos SWING GUI FORMS luego JDIALOGFOM, presiona “siguiente” y coloca un nombre al form, "login" y para terminar FINISH

6. Haz clic derecho sobre el JInternalFrame "texto_filmico" y elige "propiedades" (properties), y realiza los siguientes cambios :

Podemos trabajar con los nuevos objetos "login" y "texto_filmico" independientemente, y añadirles los objetos para trabajar en ellos.

7. Para llamar al dialog login desde el jFrame padre, abrir la vista source y agregar el procedimiento “llamar_login” y en el método principal llamar al dicho método.

private void llamar_login(){// Abrimos el formulario JDialog formulario_MDI frame= new formulario_MDI(); login l = new login(frame,true); l.setSize(500, 300) //Centrar con respecto al formulario principal l.setLocationRelativeTo(frame); //Desactiva el boton cerrar de la ventana login. l.setDefaultCloseOperation(l.DO_NOTHING_ON_CLOSE); // Evita que el usuario pueda redimensionar el formulario l.setResizable(false); l.setVisible(true); }

@SuppressWarnings("unchecked")public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { llamar_login(); } }); }

8. Añadir elementos al form login para que nos solicite los datos de autenticación ante el sistema.

9. Código para el botón “Aceptar”:

import java.sql.CallableStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.JOptionPane;public class login extends javax.swing.JDialog {Statement stmt = null; ResultSet rs = null;conexion con= new conexion(); public login(java.awt.Frame parent, boolean modal) {

super(parent, modal); initComponents(); } @SuppressWarnings("unchecked")private void initComponents()private void loguear(){ try{ CallableStatement cstmt = con.getConnection().prepareCall("{call dbo.loguear(?,?)}"); //pasamos los dos parámetros al procedimiento de SQLServer para buscar en la BD. cstmt.setString("usern", (jtfUser.getText())); cstmt.setString("passw", (psPassword.getText())); rs = cstmt.executeQuery(); //Tomamos lo escrito en los text String usuario=jtfUser.getText().trim(); String password=new String(psPassword.getPassword()); Boolean entra=false; //Para saber si fue positivo o no el ingreso al sistema while(rs.next()) { if(usuario.equals(rs.getString("username")) && password.equals(rs.getString("password"))) { JOptionPane.showMessageDialog(null,"Bienvenidos al sistema"); entra=true; // quiere decir que si entro al sistema this.dispose(); //Cierra el jDialog login break; } } if(entra==false)// si no entró al sistema { JOptionPane.showMessageDialog(null,"Usuario o contraseña incorrecto"); } }catch(SQLException e) { JOptionPane.showMessageDialog(null,"Error " + e.getMessage()); }} private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { loguear(); }

10. Ahora nos vamos al SQLServer y creamos un procedimiento almacenado dentro de la base de datos “SakilaSQL”.

11. Codificamos para buscar en la tabla “staff” el usuario y contraseña que se le va a pasar desde java.

USE [access-sakilaSQL1]GO/****** Object: StoredProcedure [dbo].[loguear] Script Date: 21/06/2013 11:46:04 p.m. ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[loguear] -- Parámetros que recibirán los datos del usuario tales como usuario y password desde java@usern nvarchar(16),@passw nvarchar(40)

ASBEGIN

SET NOCOUNT ON; -- Insert statements for procedure here-- Selecciona el usuario y contraseña que coincidan con los datos de

los parámetros @usern y @passwSELECT [staff].[username], [staff].[password] from staff where

[staff].[username]=@usern and [staff].[password]=@passw;END

12. Ejecutar. El procedimiento almacenado para guardarlo.

13. Regresamos a NetBeans y ejecutamos la aplicación para comprobar

los resultados.

Mientras no se introduzca el password correcto, no se podrá acceder a la ventana que contiene el menú de nuestra aplicación.

Ahora vamos a trabajar el menú de nuestra aplicación, para ello vamos a llamar a los formularios que han sido creados en nuestra aplicación.1. Abrimos el formulario_MDI de nuestra aplicación y modificamos el

sistema de menús, obteniendo la siguiente presentación.

2. Ahora vamos a agregar imágenes a los menús; pero antes debemos crear un paquete para almacenar las imágenes y mejorar la organización de nuestro proyecto. A este nuevo paquete llámalo “imagenes”

3. Para colocar los íconos debes seleccionar el menú correspondiente y en la ventana de propiedades hacer clic en el botón de icono.

4. Seleccionar el paquete “imágenes”/clic en el botón import to Project. Esto hace que las imágenes a importar se almacenen dentro del paquete “imagenes”

5. Seleccionar la ruta para encontrar la imagen e importarla

6. Clic en siguiente y finalizar.

7. Una vez que hayamos importado, ahora seleccionar la lista file y escoger la imagen correspondiente.

8. Para los demás menús, nuevamente seleccionar el menú correspondiente/propiedad icono/seleccionar de la lista “file” el icono/ok.

9. Ejecutar la aplicación.

10. Programar al submenú actor para llamar al formulario texto_filmico.

11. Codificar lo siguiente.

private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) { // Se crea el objeto pe texto_filmico tf= new texto_filmico (); //se adapta al tamaño del jDesktopPane1 tf.setSize(jDesktopPane1.getSize()); // se agrega el jframeinternal al jDesktopPane1 this.jDesktopPane1.add(tf); tf.show(); }

12. Ejecutar.

13. Finalmente, vamos a agregar un procedimiento al formulario principal para que al momento de salir nos confirme si realmente deseamos salir o no. Vamos a codificar debajo del procedimiento anterior llamar_login()public void cerrar(){ Object [] opciones ={"Aceptar","Cancelar"}; int eleccion = JOptionPane.showOptionDialog(null,"Realmente desea salir de la aplicación","Mensaje de Confirmacion", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,null,opciones,"Aceptar");

if (eleccion == JOptionPane.YES_OPTION) { System.exit(0);}else {}}

14. En el evento Windows_clousing. Llamar al procedimiento cerrar().

private void formWindowClosing(java.awt.event.WindowEvent evt) { cerrar(); }

15. Ejecutar

Ejercicios: Implementar el formulario “texto_fílmico”, tal como se muestra a

continuación, la funcionalidad debe ser similar al formulario mantActor.

Debe usar procedimientos almacenados para las acciones de eliminar, nuevo, buscar y actualizar.