Clase adicinal 5 Temas Interfaces Qué es una interfaz ActinListener Intrducción a Java Swing Qué es Swing SwingApplicatin Guía pas a pas Prblemas de diseñ Interfaz Qué es una interfaz Una interfaz es un cnjunt de declaracines de métds que pueden ser implementadas pr clases Una interfaz describe qué clases deberían hacerl, sin especificar la frma La frma se definirá en las cases que implementen la interfaz Cada clase define la implementación de frma distinta Una clase puede implementar una más interfaces Una interfaz puede cntener tant métds cm cnstantes Para utilizar una interfaz, la case debe Implementar dicha interfaz Definir TODOS ls métds incluids en dicha interfaz ActinListener ActinListener es una interfaz de Java implementada pr muchs cmpnentes GUI, cm ls btnes. Sól tiene un métd: actinperfrmed. La definición es la siguiente: public Interface ActinListener { } public vid actinperfrmed(actinevent e) El ejempl que se muestra a cntinuación es una aplicación GUI de Java llamada SwingApplicatin que tiene un cntadr de clics de btnes : cada vez que el usuari hace clic en el btón, el cntadr se incrementa en 1. Explicarems cóm crear la GUI en la siguiente sección. Aquí, ns limitarems a mstrar cóm se debe implementar ActinListener.
class SwingApplicatin implements ActinListener {. int numclicks = 0; // cntadr de clics JLabel label = new JLabel( Númer de clics: + numclicks); JButtn buttn = new JButtn(" Sy un btón Swing!"); buttn.addactinlistener(this); //Añade un actinlistener al btón public vid actinperfrmed(actinevent e) { numclicks++; label.settext( Númer de clics: + numclicks); } } Aquí, la clase SwingApplicatin implementa la interfaz ActinListener. Dentr de la definición de la clase, ha redefinid el métd actinperfrmed: cada vez que el usuari hace clic en el btón, el cntadr del mensaje se incrementa en 1. Intrducción a Java Swing Qué es Swing El paquete Swing frma parte de las JavaTM Fundatin Classes (JFC) de la platafrma de Java. Las JFC acmpañan a un grup de funcines que ayudan al usuari a cnstruir las GUI. Aquí se muestran alguns de ls cmpnentes Swing utilizads cn más frecuencia: Lista Btnes Cuadr cmbinad
Cuadr de diálg Panel de desplazamient Menú Tabla Marc SwingApplicatin SwingApplicatin es un ejempl extraíd de la clase adicinal de Java. Tal cm mencinams anterirmente, se trata de un cntadr de clics de btnes : cada vez que el usuari hace clic en el btón, la etiqueta se actualiza y muestra el cntadr cn un increment de 1. SwingApplicatin tiene cuatr cmpnentes Swing: Un marc (JFrame). El marc es un cntenedr de nivel superir. Ofrece un espaci para que trs cmpnentes Swing se puedan dibujar a sí misms. Ls trs cntenedres de nivel superir que se utilizan cn más frecuencia sn ls cuadrs de diálg (JDialg) y ls applets (JApplet). Un panel (JPanel). El panel es un cntenedr intermedi. Su única finalidad es simplificar la ubicación del btón y la etiqueta. Otrs cntenedres intermedis Swing sn JScrllPane (paneles de desplazamient) y JTabbedPane (paneles tabulads) Un btón (JButtn) y una etiqueta (JLabel). El btón y la etiqueta sn cmpnentes atómics, cmpnentes que n existen para aljar a trs cmpnentes Swing sin para interactuar cn el usuari. La API Swing frece muchs cmpnentes atómics entre ls que se incluyen cuadrs cmbinads (JCmbBx), camps de text (JTextField) y tablas (JTable).
A cntinuación se incluye un diagrama de la jerarquía de cmpnentes para la ventana mstrada pr SwingApplicatin Aquí está el códig que agrega el btón y la etiqueta al panel, y el panel al panel de cntenid: frame = new JFrame(...); pane = new JPanel(); buttn = new JButtn(...); label = new JLabel(...); pane.add(buttn); pane.add(label); frame.getcntentpane().add(pane, BrderLayut.CENTER); Guía pas a pas Ahra mstrams una guía pas a pas para crear esta SwingApplicatin: Definición del cntenedr de nivel superir Definición de btnes y etiquetas Incrpración de cmpnentes a ls cntenedres Gestión de events A cntinuación analizarems cada pas en prfundidad. Definición del cntenedr de nivel superir
//Crear el cntenedr de nivel superir llamad SwingApplicatin JFrame frame = new JFrame("SwingApplicatin");... frame.pack(); frame.setvisible(true); Definición de btnes y etiquetas //Crear un btón JButtn buttn = new JButtn(" Sy un btón Swing!"); //Crear una etiqueta JLabel label = new JLabel( Númer de clics de btnes: + "0 "); //Definir el text de la etiqueta int numclicks = 0; label.settext( Númer de clics de btnes: + numclicks); Incrpración de cmpnentes a ls cntenedres JPanel pane = new JPanel(); pane.setlayut(new GridLayut(0, 1)); pane.add(buttn); pane.add(label); frame.getcntentpane().add(pane, BrderLayut.CENTER); Gestión de events Hablarems de esta función en la siguiente clase adicinal. Prblema de diseñ Interfaz Han cntratad sus servicis para desarrllar un prgrama de cntabilidad que calcule el salari semanal de tres tips de empleads: administrativs, sindicalistas y cntratistas. Cada emplead administrativ tiene un númer de seguridad scial (SSN), un nmbre, títul y salari. N se cntempla el abn de hras extra para este tip de empleads Cada emplead sindicalista tiene un SSN, un nmbre, una tarifa pr hra y un númer de hras trabajadas. Ls estatuts del sindicat exigen el abn de hras extra a este tip de empleads, que es 1,5 veces la tarifa pr hra cuánd éstas superen las 40 Cada emplead cntratista tiene un SSN, un nmbre, una agencia, un númer de hras trabajadas y una tarifa pr hra. N es precis pagar a ls cntratistas una tarifa más elevada pr las hras extra. Sin embarg, hay un límite para las hras que cada cntratista puede trabajar a la semana. Actualmente, este límite está en 60 * tarifa pr hra.
Defina un cnjunt de clases que den frma a esta situación. Abaj se definen ls requisits: Crear una clase abstracta llamada Emplyee (Emplead) que tenga un métd llamad print (imprimir) Crear una interfaz Cmpensatin (Cmpensación) que tenga un métd llamad calculatepay (calcularsalari) Crear tres subclases: Management (Administrativ), UninWrker (Sindicalista) y Cntractr (Cntratista) que hereden de Emplyee Cada subclase implementará la interfaz Cmpensatin Cada subclase, a su vez, deberá imprimir tda su infrmación. A md de ejempl, ésta es la infrmación que se btendría para un directr: SSN: 1111 Nmbre: Wen Xia Salari: $9500 Cmpnente básic Swing Descargue el códig de SwingApplicatin.java y agregue una barra de menús al marc. Esta barra de menús tiene ds menús: File (Archiv) y Edit (Edición). En File, hay 3 elements de menú: Open (Abrir), Save (Guardar) y Exit (Salir). Dentr de Edit, hay ds elements de menú: Cpy (Cpiar) y Paste (Pegar). N es necesari que implemente ninguna función de gestión de events, sól la GUI. (Puede cnsultar un curs breve sbre el md de utilizar menús en http://java.sun.cm/dcs/bks/tutrial/uiswing/cmpnents/menu.html Cmpruebe que el prgrama se puede cmpilar y ejecutar.