Aplicaciones GUI en Java Aplicaciones GUI en Java

  • Slides: 24
Download presentation
Aplicaciones GUI en Java

Aplicaciones GUI en Java

Aplicaciones GUI en Java Tecnologías GUI de Java ● AWT (Abstract Window Toolkit) ●

Aplicaciones GUI en Java Tecnologías GUI de Java ● AWT (Abstract Window Toolkit) ● JFC (Java Foundation Classes). Mejor conocida como Swing ● SWT (Standard Widget Toolkit)

Programación JFC (Swing) ● ● ● Frames – JFrame – JDialog Panels – Layouts

Programación JFC (Swing) ● ● ● Frames – JFrame – JDialog Panels – Layouts – Boxes Componentes (widgets) – JComponent – JLabel – JText. Field – JButton – JList

Aplicaciones GUI en Java ● ● Para crear una aplicación con Swing se debe:

Aplicaciones GUI en Java ● ● Para crear una aplicación con Swing se debe: – Crear un JFrame – Llenarlo de components según los requerimientos de la aplicación – Mostrar el JFrame en pantalla invocando el método set. Visible(true) Ejemplo – public static void main(String[] args) – { – JFrame frame = new JFrame(); – frame. set. Visible(true); – }

Aplicaciones GUI en Java ● Se acostumbra (pero no es obligatorio) declarar una subclase

Aplicaciones GUI en Java ● Se acostumbra (pero no es obligatorio) declarar una subclase de JFrame y en el constructor llenar el Frame de componentes – public class Frame. Alumnos extends JFrame { – JText. Field nombre; – JText. Field fecha. Nac; – Frame. Alumnos() { – JPanel content. Pane = (JPanel) get. Content. Pane(); – nombre = new JText. Field(); – content. Pane. add(nombre); – Fecha. Nac = new Jtext. Field(); – content. Pane. add(fecha. Nac); – } – . . .

Aplicaciones GUI en Java Ubicación de componentes en un Frame (Layout) ● ● ●

Aplicaciones GUI en Java Ubicación de componentes en un Frame (Layout) ● ● ● La clase JPanel es un contenedor de objetos que pueden ser desplegados Un JFrame tiene un panel principal que se obtiene invocando get. Content. Pane() – JFrame frame = new JFrame(); – JPanel content. Pane = (JPanel) frame. get. Content. Pane(); – . . . Un panel puede contener componentes finales (JLabel, JText. Field, etc. ) u otros paneles (Jpanel) Esto permite acomodar las cosas en el Frame Se puede utilizar posicionamiento absoluto (x, y) pero esto no es recomendable

Aplicaciones GUI en Java Layouts ● ● ● Los Layouts son clases que determinan

Aplicaciones GUI en Java Layouts ● ● ● Los Layouts son clases que determinan la forma como se acomodan los componentes en un panel A cada JPanel se le puede asignar un Layout – JPanel panel = new Jpanel() – panel. set. Layout(new Flow. Layout()); Algunos Layouts comunmente usados – Flow. Layout. De izquierda a derecha y de arriba abajo. – Grid. Layout. Una tabla o cuadrícula (todas las celdas del mismo tamaño). – Box. Layout. De arriba abajo o de izquierda a derecha. Tamaño variable (muy importante).

Aplicaciones GUI en Java Eventos ● ● ● Swing permite el desarrollo de aplicaciones

Aplicaciones GUI en Java Eventos ● ● ● Swing permite el desarrollo de aplicaciones manejadas por eventos (event driven) Un evento es un click del ratón, una tecla oprimida, seleccionar una opción en un menú, etc. Para procesar estos eventos una aplicación debe definir unos event listener. Un event listener es un objeto que se registra con un componente para un evento en particular. Cuando ocurre el evento el listener es notificado mediante la invocación de un método

Aplicaciones GUI en Java ● ● Para crear un listener la aplicación debe declarar

Aplicaciones GUI en Java ● ● Para crear un listener la aplicación debe declarar una clase que implementa alguna interfaz listener (listener interface) Las interfaces listener más usadas son: – Action. Listener – Mouse. Listener – Key. Listener – Window. Listener

Aplicaciones GUI en Java Ejemplo – class Edad. Key. Listener implements Key. Listener {

Aplicaciones GUI en Java Ejemplo – class Edad. Key. Listener implements Key. Listener { void key. Typed(Key. Event e) { – – char c = e. get. Key. Char(); – if (!Character. is. Digit(c) { // error, solo se permiten números – } – void key. Pressed(Key. Event e) { – } – void key. Released(Key. Event e) { – }

Aplicaciones GUI en Java ● ● Existen unas clases adapter que implementan la interfaz

Aplicaciones GUI en Java ● ● Existen unas clases adapter que implementan la interfaz correspondiente y definen métodos vacíos Esto da la facilidad de que no hay que implementar los métodos que no interesan – class Edad. Key. Listener extends Key. Adapter { void key. Typed(Key. Event e) { – – char c = e. get. Key. Char(); – if (!Character. is. Digit(c) { // error, solo se permiten números – } – – }

Aplicaciones GUI en Java Ejemplo de uso ● Text. Field edad = new Text.

Aplicaciones GUI en Java Ejemplo de uso ● Text. Field edad = new Text. Field(3); ● edad. add. Key. Listener(new Edad. Key. Listener());

Aplicaciones GUI en Java ● ● Cada componente permite agregar un Action. Listener que

Aplicaciones GUI en Java ● ● Cada componente permite agregar un Action. Listener que está relacionado con el tipo del componente Pero ejemplo si a un botón se le agrega un Action. Listener el mismo es invocado cuando se oprime el botón ya sea con el mouse o con el teclado. ● No es necesario definir Key. Events o Mouse. Events para esto ● Los Action. Listener se usan principalmente con botones y menús ● ● ● Sin embargo también pueden ser usados con otros tipos de componente. Por ejemplo, para un Text. Field el Action. Listener es invocado cuando el cursor sale del Text. Field Las listas y tablas utilizan unos listeners especiales denominados Selection. Listener

Aplicaciones GUI en Java Ejemplo de un Action. Listener – JButton btn. Cancelar =

Aplicaciones GUI en Java Ejemplo de un Action. Listener – JButton btn. Cancelar = new JButton(“Cancelar”); – btn. Cancelar. add. Action. Listner(new Cancelar. Listener()); – class Cancelar. Listener implements Action. Listener { void action. Performed(Action. Event e) { – dialogo. set. Visible(false); – } – – }

Aplicaciones GUI en Java Diálogos ● ● ● Un diálogo es un frame que

Aplicaciones GUI en Java Diálogos ● ● ● Un diálogo es un frame que permite recolectar datos para realizar algún procesamiento En Java existe una clase JDialog para este fin. JDialog es subclase de JFrame y permite definir diálogos modales y no modales Si un diálogo es modal cuando se activa no se puede acceder a ningún otro elemento del programa Si el diálog es modal se abre la ventana (window) del diálogo pero el usuario puede seleccionar y trabajar con otras ventanas de la aplicación En Swing si el diálogo es modal el hilo que abre el diálogo se bloquea hasta que el diálogo sea cerrado.

Aplicaciones GUI en Java ● Para crear un diálogo modal se debe especificar en

Aplicaciones GUI en Java ● Para crear un diálogo modal se debe especificar en el constructor – JDialog dlg = new Jdialog(frame, “Titulo”, true); ● El tercer parámetros es booleano e indica si el diálogo es modal ● Generalmente se crea una subclase de JDialog: – public class Dialogo. Datos extends Jdialog { – JText. Field nombre; – . . . – public Dialogo. Datos(JFrame frame) { – super(frame, “Título”, true); – Content. Pane cp = (Content. Pane) get. Content. Pane(); – . . . } – – }

Aplicaciones GUI en Java ● ● ● Ejemplo de uso – Dialogo. Datos dlg

Aplicaciones GUI en Java ● ● ● Ejemplo de uso – Dialogo. Datos dlg = new Dialogo. Datos(this); – dlg. set. Visible(true); – String nombre = dlg. get. Nombre(); – . . . Si el diálogo no es modal el código que sigue a la instrucción continúa ejecutándose en un hilo paralelo. Por lo tanto la lógica a ejecutar debe colocarse en los métodos de los Action. Listener definidos en el diálogo

Aplicaciones GUI en Java Como dibujar cosas en una ventana ● ● ● La

Aplicaciones GUI en Java Como dibujar cosas en una ventana ● ● ● La clase JComponent es la superclase de la cual se derivan todos los componentes en Swing Se pueden crear subclases de JComponent para definir nuevos componentes El método paint. Component(Graphics g) definido en Jcomponent se usa para dibujar el componente Este método es invocado por Swing cada vez que se requiere repintar el componente (por ejemplo, si la ventana estaba debajo de otra y va a pasar a primer plano, o si estaba minimizada y se va restaurar) A continuación se presenta la forma de hacer un componente para dibujar figuras geométricas en la pantalla

Aplicaciones GUI en Java – public class Superficie. Dibujo extends JComponent { – private

Aplicaciones GUI en Java – public class Superficie. Dibujo extends JComponent { – private int width; – private int height; – private Image image; – private Graphics graphics; – public Superficie. Dibujo(int w, int h) { – this. width = w; – this. height = h; – image = new Buffered. Image(w, h, Buffered. Image. TYPE_INT_RGB); – – graphics = image. get. Graphics(); – this. borrar(); – }

Aplicaciones GUI en Java – public void dibujar. Rectangulo(Rectangle rect) – { – graphics.

Aplicaciones GUI en Java – public void dibujar. Rectangulo(Rectangle rect) – { – graphics. set. Color(Color. BLACK); – graphics. draw. Rect(rect. x, rect. y, rect. width, rect. height); – this. repaint(); – – } – – public void paint. Component(Graphics g) – { g. draw. Image(image, 0, 0, null); – – }

Aplicaciones GUI en Java Listas ● La clase JList representa una lista de valores

Aplicaciones GUI en Java Listas ● La clase JList representa una lista de valores – ● ● ● JList lista = new Jlist(); Para que la lista tenga scrollbars se debe colocar dentro de un Scroll. Pane: – JScroll. Pane sp = new JScroll. Pane(lista); – sp. set. Preferred. Size(new Dimension(80, 260)); Los elementos de una lista se guardan en un objeto de una clase que implementa la interfaz List. Model La interfaz List. Model define métodos para obtener los elementos de la lista mediante un índice y para obtener el tamaño de la lista

Aplicaciones GUI en Java ● ● ● La clase Default. List. Model implementa List.

Aplicaciones GUI en Java ● ● ● La clase Default. List. Model implementa List. Model – lista = new JList(); – List. Model list. Model = new Default. List. Model(); – lista. set. Model(list. Model); Para agregar o borrar elementos a la lista se usan métodos definidos en Default. List. Model – String s = “Hola”; – list. Model. add. Element(s); – list. Model. remove(2); Se se requiere funcionalidad adicional se puede definir una subclase de Abstract. List. Model

Aplicaciones GUI en Java Tablas ● La clase JTable representa una tabla de valores

Aplicaciones GUI en Java Tablas ● La clase JTable representa una tabla de valores – ● ● ● JTable table = new JTable() Para que la tabla tenga scrollbars se debe colocar dentro de un Scroll. Pane: – JScroll. Pane sp = new JScroll. Pane(table); – sp. set. Preferred. Size(new Dimension(80, 260)); Los elementos de una tabla se guardan en un objeto de una clase que implementa la interfaz Table. Model La interfaz Table. Model define, entre otros, métodos para obtener los elementos de la tabla mediante dos índices (fila y columna) y para obtener el tamaño de la tabla

Aplicaciones GUI en Java ● ● ● La clase Default. Table. Model implementa Table.

Aplicaciones GUI en Java ● ● ● La clase Default. Table. Model implementa Table. Model – Jtable = new JTable(); – Table. Model tbl. Model = new Default. Table. Model(); – table. set. Model(tbl. Model); Para agregar o borrar elementos a la tabla se usan métodos definidos en Default. Table. Model – Vector fila = new Vector(); – tbl. Model. add. Row(fila); – tbl. Model. remove. Row(1); Se se requiere funcionalidad adicional se puede definir una subclase de Abstract. Table. Model