You are on page 1of 14

Fecha de efectividad: __________________

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD

Formato para prácticas de laboratorio

PLAN DE CLAVE
CARRERA NOMBRE DE LA ASIGNATURA
ESTUDIO ASIGNATURA
IC 2003-1 5033 Programación Orientada a Objetos I

PRÁCTICA LABORATORIO Ingeniero en Computación y Licenciado en DURACIÓN
No. DE Sistemas Computacionales (HORA)
NOMBRE DE LA
10 PRÁCTICA Programación Orientada a Objetos I 2

1. INTRODUCCIÓN

Es difícil pensar en que una aplicación desarrollada actualmente, sea atractiva para los usuarios si carece
de una interfaz amigable e intuitiva. Las interfaces de modo texto o en líneas de comandos difícilmente
pueden tener estas características. Hoy en día las aplicaciones en modo gráfico no son solamente más
atractivas, sino que también le permiten al usuario ser más productivo, ya que es más fácil tener más
elementos (componentes) dentro de una misma vista (ventana) y también ayudan a evitar que datos
erróneos ingresados por los usuarios sean procesados, lo cuál puede costar tiempo de procesamiento y de
transmisión de datos.

2. OBJETIVO (COMPETENCIA)

Elaborar una aplicacion en la que se utilice la programacion orientada a eventos para un ambiente grafico
que aplique los principales componentes que proporciona el API de Java para crear aplicaciones en un
ambiente gráfico.

Formuló Revisó Aprobó Autorizó
ISC Jesús Alberto M.C. Gloria Etelbina M.C. Miguel Ángel
Herrera Rangel, Chavez Valenzuela, Martínez Romero
Cecilia Curlango LSC Monic Lam Mora
Rosas

Código GC-N4-017 .
Página 1 de 14 Revisión 1 .

seleccionar un objeto de una lista. o simplemente mover el mouse . etc. Crear un Proyecto GUI en Eclipse Para facilitar la creación de GUIs en Eclipse se deben de instalar los plugins apropiados. Manejo de Eventos Uno de los principales objetivos de la programación gráfica es permitirle al usuario interactuar con la aplicación. ( La mayoria de los componentes que se reescribieron.Java considera eso como un evento. el mal diseño de su arquitectura. Una vez que se encuentran instalados estos plugins crear un GUI será cuestion de emplear técnicas drag-and-drop. etc. Página 2 de 14 Revisión 1 . Código GC-N4-017 . a continuación se describirán los pasos necesarios para desarrollar un sistema que mostrará la suma de dos números. Al seleccionar el botón Next. son los que se encargan de hacer todo el trabajo gráfico. existen algunos que dada su naturaleza. AWT fué un avance significante para su epoca. Para ejemplificar el proceso desarrollo de una aplicación con GUI. A los componentes de Swing también se les conoce como "Lightweight Components" (Componentes Ligeros) a diferencia de AWT que se les conoce como "Heavyweight Components". . cajas de texto. cerrar una ventana. ContentPane. forzaron a Sun a desarrollar una nueva versión de los componentes gráficos. Este nuevo paquete de clases se llama Swing. Ésta la crearemos indicando que es una Java Visual Class como se ve en la Figura 1: Selección de Clase Visual.como dar un click a un botón. es imposible hacerlos de esta manera. la cantidad de "bugs" que este contenía y sobre todo. El primer paso deberá ser el crear un proyecto nuevo en eclipse. Esto es por la mejora que se les hizo en cuanto a consumo de recursos se refiere. No todos los componentes de Swing son tan "ligeros". en Swing todos los componentes son derivados de la clase JComponent. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio Coordinador de la Gestión de la Director de la Maestro Carrera Calidad Facultad 3. JDialog y JWindow. Los componentes principales para una aplicación gráfica son: JFrame. JLayeredPane. Tal como en AWT todos los componentes son derivados de la clase Component. Cuando un usuario realiza alguna acción . Otra forma de crear la clase sería seleccionar el tipo Jframe Visual Class que verse en la misma figura. se presentará la caja de dialogo que se ve en la Figura 2 Especificacion del nombre de la clase. se les diferencía de los componentes AWT porque los nombres de las clases comienzan con "J"). Estos componentes hijos son: JRootPane. JApplet. Estos son paneles principales que contienen otros paneles hijos donde se colocan todos los demás componentes visuales como botones. Una vez creado el proyecto se creará una clase llamada Sumadora. este tendrá como nombre AppGUI. la enorme cantidad de recursos que tomaba. y esa interacción se programa en los eventos. FUNDAMENTO ¿Que es Swing? En las primeras versiones de Java. Sun Microsystems proporcionó a los desarrolladores un conjunto de clases para el desarrollo de interfases gráficas llamado AWT (Abstract Windowing Toolkit). sin embargo.

La Figura 3 Interfaz de sumadora. muestra la interfaz grafica que crearemos. Como se menciono. una vez que se terminan de seguir los pasos indicados por el asistente. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio Figura 1: Selección de Clase Visual Figura 2Especificacion del nombre de la clase. El siguiente paso sera especificar los detalles de esta aplicacion. . Eclipse genera todo el codigo requerido para una aplicacion grafica. Página 3 de 14 Revisión 1 . Código GC-N4-017 .

        private JMenu helpMenu = null. public class Sumadora extends JFrame {         private JPanel jContentPane = null.JButton.JDialog.KeyEvent.swing. import java.JMenuItem. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio JLabel JLabel JTextField  JTextField  numero1 resultado no editable JTextField  numero2 JButton  Figura 3Interfaz de sumadora. Código GC-N4-017 .swing. import javax.ActionEvent. import javax.JPanel. import java.JFrame.ActionListener.         private JMenu editMenu = null. Página 4 de 14 Revisión 1 . import javax.JMenuBar.         private JMenuBar jJMenuBar = null.Event.event. import javax.KeyStroke.         private JMenu fileMenu = null.JMenu.swing.event. import javax. import javax.swing.JTextField. import javax.swing.JLabel.event. import java.swing.         private JMenuItem exitMenuItem = null.awt. import javax. import javax.awt. sumarBoton import java. .swing. import javax.awt.swing.swing.awt.swing.

        private JTextField resultado = null.         private JTextField numero2 = null.swing.         private JLabel jLabel1 = null.                 this.         private JMenuItem saveMenuItem = null.         }         /**          * This method initializes jContentPane          *           * @return javax.setJMenuBar(getJJMenuBar()).         private JMenuItem pasteMenuItem = null.                 this.         }         /**          * This method initializes this          *           * @return void          */         private void initialize() {                 this. Página 5 de 14 Revisión 1 .                 this.setDefaultCloseOperation(JFrame.setTitle("Sumadora").setContentPane(getJContentPane()). Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio         private JMenuItem aboutMenuItem = null.JPanel Código GC-N4-017 .                 initialize(). .EXIT_ON_CLOSE).         private JMenuItem cutMenuItem = null.         private JButton sumaBoton = null.         private JTextField numero1 = null.         /**          * This is the default constructor          */         public Sumadora() {                 super(). 196).                 this.setSize(387.         private JMenuItem copyMenuItem = null.         private JLabel jLabel = null.

 null). java.setText("=").         }         /**          * This method initializes jJMenuBar              *                * @return javax.         }         /**          * This method initializes jMenu                  *                * @return javax.awt.                         jContentPane = new JPanel().swing.35. 24)).                         jLabel1.add(getNumero1().Rectangle(213. Página 6 de 14 Revisión 1 .BOLD.                         jLabel.29)).setFont(new java.Font.setBounds(new java.23.add(getHelpMenu()).33.                         jContentPane. null).add(getNumero2().                         jContentPane.                 }                 return jJMenuBar.add(getEditMenu()).                         jJMenuBar.Rectangle(86.awt.                         jJMenuBar.awt.                         jLabel = new JLabel().                         jLabel.BOLD. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio          */         private JPanel getJContentPane() {                 if (jContentPane == null) {                         jLabel1 = new JLabel().                         jContentPane.JMenuBar           */         private JMenuBar getJJMenuBar() {                 if (jJMenuBar == null) {                         jJMenuBar = new JMenuBar(). null).awt. null).Font("Dialog".                         jContentPane. 24)).setFont(new java.                         jLabel1. java.add(jLabel.                         jJMenuBar.19. . null).add(jLabel1.                 }                 return jContentPane.setLayout(null).setBounds(new java.                         jContentPane.awt.setText("+").add(getResultado().swing.                         jLabel1. null).                         jContentPane.add(getSumaBoton().add(getFileMenu()).awt.29)).                         jLabel.Font("Dialog".Font.JMenu              */         private JMenu getFileMenu() {                 if (fileMenu == null) { Código GC-N4-017 .                         jContentPane.

                        editMenu.swing.                         editMenu.setText("Help").                         helpMenu.setText("File"). Página 7 de 14 Revisión 1 .                         fileMenu.add(getExitMenuItem()).add(getSaveMenuItem()).                         helpMenu.                         editMenu.                         editMenu.                 }                 return helpMenu.swing.add(getPasteMenuItem()).                 }                 return editMenu.         }         /**          * This method initializes jMenu                  *                * @return javax.         }         /**          * This method initializes jMenuItem              *                * @return javax.swing.         }         /**          * This method initializes jMenu                  *                * @return javax.JMenu              */         private JMenu getHelpMenu() {                 if (helpMenu == null) {                         helpMenu = new JMenu().add(getAboutMenuItem()).                         exitMenuItem. Código GC-N4-017 .                 }                 return fileMenu.JMenuItem                  */         private JMenuItem getExitMenuItem() {                 if (exitMenuItem == null) {                         exitMenuItem = new JMenuItem().add(getCopyMenuItem()).                         fileMenu.JMenu              */         private JMenu getEditMenu() {                 if (editMenu == null) {                         editMenu = new JMenu().                         fileMenu. .setText("Edit").add(getCutMenuItem()).setText("Exit"). Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio                         fileMenu = new JMenu().

this.                         aboutMenuItem.JMenuItem                  */         private JMenuItem getAboutMenuItem() {                 if (aboutMenuItem == null) {                         aboutMenuItem = new JMenuItem().                 }                 return aboutMenuItem.setAccelerator(KeyStroke.                                         Event.                 }                 return cutMenuItem. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio                         exitMenuItem.         }         /**          * This method initializes jMenuItem              *                * @return javax.setText("Cut").                 }                 return exitMenuItem.swing.                         cutMenuItem.                                 }                         }). .                         cutMenuItem.         }         /**          * This method initializes jMenuItem              *                * @return javax.                         aboutMenuItem. true)).swing.                                 }                         }).CTRL_MASK.addActionListener(new ActionListener() {                                 public void actionPerformed(ActionEvent e) {                                         System. true). "About".getKeyStroke(KeyEvent.setText("About").JMenuItem         Código GC-N4-017 . Página 8 de 14 Revisión 1 .exit(0).show ().addActionListener(new ActionListener() {                                 public void actionPerformed(ActionEvent e) {                                         new JDialog(Sumadora.swing.         }         /**          * This method initializes jMenuItem              *                * @return javax.VK_X.JMenuItem                  */         private JMenuItem getCutMenuItem() {                 if (cutMenuItem == null) {                         cutMenuItem = new JMenuItem().

 true)).swing.         }         /**          * This method initializes jMenuItem              *                * @return javax.                 }                 return pasteMenuItem.CTRL_MASK.                                         Event.swing.                         pasteMenuItem.CTRL_MASK.JMenuItem                  */         private JMenuItem getSaveMenuItem() {                 if (saveMenuItem == null) {                         saveMenuItem = new JMenuItem().JMenuItem                  */         private JMenuItem getPasteMenuItem() {                 if (pasteMenuItem == null) {                         pasteMenuItem = new JMenuItem().getKeyStroke (KeyEvent.setAccelerator(KeyStroke.                 }                 return saveMenuItem. Página 9 de 14 Revisión 1 .         }         /**          * This method initializes jMenuItem              *                * @return javax.                                         Event.getKeyStroke (KeyEvent.                         copyMenuItem.setAccelerator(KeyStroke.setText("Copy"). true)). Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio          */         private JMenuItem getCopyMenuItem() {                 if (copyMenuItem == null) {                         copyMenuItem = new JMenuItem().VK_C.VK_V.                         pasteMenuItem.                         saveMenuItem. true)).setAccelerator(KeyStroke.CTRL_MASK.         }         /**          * This method initializes jTextField             *       Código GC-N4-017 .VK_S.                                         Event.setText("Save").                         saveMenuItem.getKeyStroke (KeyEvent.                         copyMenuItem.setText("Paste").                 }                 return copyMenuItem. .

                resultado.                         numero2.                        sumaBoton.ActionEvent e) {                                         System.31.getText()) +      Double.setText(suma.                 Double suma = new Double(sumatoria).swing.ActionListener() {                              public void actionPerformed(java.setBounds(new java.awt.                                 }                         }).awt.         }         /**          * This method initializes jButton                *                * @return javax.setText("Calcular").Rectangle(122.addActionListener(new java.parseDouble(numero2.awt.42)).setBounds(new java.swing.168.34)).setText("0").                 }                 return sumaBoton.println("actionPerformed()").                 sumatoria = Double.setHorizontalAlignment(javax.parseDouble(numero1.                                          sumar().RIGHT).awt.72.                        sumaBoton. Página 10 de 14 Revisión 1 .getText()).swing.         }         /**          * This method initializes jTextField             *                * @return javax.                 }                 return numero2.JTextField                 */         private JTextField getNumero1() { Código GC-N4-017 .swing.JTextField.81.JButton            */         private JButton getSumaBoton() {                 if (sumaBoton == null) {                        sumaBoton = new JButton().event.JTextField                 */         private JTextField getNumero2() {                 if (numero2 == null) {                         numero2 = new JTextField().                        sumaBoton.                         numero2.                         numero2. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio          * @return javax.Rectangle(94. .         }         protected void sumar() {                 // TODO Auto­generated method stub                 double sumatoria = 0.toString()).out.event.0.

9.RIGHT).awt.31)).                         numero1.setHorizontalAlignment(javax.Rectangle(15.                 }                 return resultado. Ahora se debe agregar un metodo que realice lo Código GC-N4-017 .RIGHT).10" syntax highlighted by Code2HTML.show(). Posteriormente colocaremos los componentes que se indican el la Figura 3.         } }  //  @jve:decl­index=0:visual­constraint="10. primero debemos establecer que el layout del JContentPane sera null. Esto agregara el codigo que se muestra con un cuadro rojo en el listado. De esta manera.JTextField. Una vez creada la interfaz de usuario.awt.33. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio                 if (numero1 == null) {                         numero1 = new JTextField(). v.                         resultado.setHorizontalAlignment(javax.                         numero1.setEditable(false). haga click-derecho sobre el boton y seleccione Events-actionPerformed.JTextField                 */         private JTextField getResultado() {                 if (resultado == null) {                         resultado = new JTextField().setBounds(new java.                 application.swing.32)).JTextField. podremos acomodar los componentes exactamente en el sitio donde lo queramos.72. .                         resultado. 0.                         resultado.setBounds(new java.31.         }         /**          * This method initializes jTextField             *                * @return javax.setText("0"). se debe asignar la accion que va a realizar el boton cuando se presione.1 Para crear la intefaz.Rectangle(255. Para esto. Página 11 de 14 Revisión 1 .                         numero1.swing.                 }                 return numero1.         }         /**          * Launches this application          */         public static void main(String[] args) {                 Sumadora application = new Sumadora().57.swing.

Aqui despues de escribir los datos del alumno. El metodo sumar() obtiene los numeros que se encuentran en los JtextFields numero1 y numero2. En este caso el nombre del metodo es sumar() y se muestra en amarillo. PROCEDIMIENTO (DESCRIPCIÓN) A) EQUIPO NECESARIO MATERIAL DE APOYO Computadoras con sistema operativo Linux o Windows. Este programa podra realizar altas. entorno API de Java de desarrollo integrado Eclipse y plugins para Eclipse para el soporte de aplicaciones graficas B) DESARROLLO DE LA PRÁCTICA Elaborar un programa sencillo de control escolar. Código GC-N4-017 . aparecera una pantalla como la de la Figura 4. El cuerpo del metodo sumar() se muestra en el cuadro verde. Cuando se presiona el boton de altas. Una vez que se presione el boton de Registrar Baja. se presionara el boton para registrar al alumno. aparecera una pantalla como la de la Figura 5. Página 12 de 14 Revisión 1 . Despues suma estos dos numeros y el resultado lo asigna al JTextField resultado. La interfaz de usuario tendra 3 botones para seleccionar una de las tres operaciones posibles. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio que queremos cuando se presione el boton. bajas y consultas de los datos de los alumnos de una clase. 4. Aqui se debera escribir la matricula del alumno que se va a dar de baja. Figura 4Pantalla de Altas Cuando se presiona el boton de bajas. . se debera borrar al alumno del registro o mostrar un error en caso de no encontrarlo.

aparecera una pantalla como la de la Figura 6. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio Figura 5Bajas de Alumno Cuando se presiona el boton de consultas. . Aqui se debera escribir la matricula del alumno que se va a consultar y despues presionar el boton CONSULTAR. Página 13 de 14 Revisión 1 . Código GC-N4-017 . se deberan mostrar los datos del alumno como se ve en la Figura 7 o mostrar un error en caso de no encontrarlo. Una vez que se presione el boton CONSULTAR.

0/docs/api/index.html Código GC-N4-017 .eclipse. Página 14 de 14 Revisión 1 . ANEXOS Plugins requeridos para el desarrollo de las demostraciones de esta práctica: Eclipse Modeling Framework (EMF) http://www. Fecha de efectividad: __________________ UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE INGENIERÍA (UNIDAD MEXICALI) DOCUMENTO DEL SISTEMA DE CALIDAD Formato para prácticas de laboratorio C) CÁLCULOS Y REPORTE 5.eclipse.eclipse. 7. RESULTADOS Y CONCLUSIONES 6.sun.org/gef/ Visual Editor (VE) http://www.org/emf/ Graphical Editing Framework (GEF) http://www.5. REFERENCIAS API de Java http://java.org/vep/ La instalación de estos plugins requiere simplemente descargar el archivo correspondiente y desempaquetarlo en el directorio inmediatamente superior al directorio eclipse donde se instaló el IDE.com/j2se/1. .