2.Componentes y Librerias

Tópicos Avanzados de Programación Tema II Componentes y Librerías MRYSI: Ángel Salas Martinez [email protected]

Views 75 Downloads 0 File size 781KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Tópicos Avanzados de Programación Tema II Componentes y Librerías

MRYSI: Ángel Salas Martinez [email protected]

Contenido

Componentes y librerías 2.1 Definición conceptual de componentes, paquetes/ Librerías. 2.2 Uso de librerías proporcionadas por el lenguaje 2.3 Creación de componentes (Visuales y no visuales) definidos por el usuario. 2.4 Creación de paquetes / librerías definidas por el usuario.

3.1 Definición conceptual de componentes, paquetes/ Librerías. Componente: Es una clase abstracta que representa todo lo que tiene una posición, un tamaño, puede ser pintado en pantalla y puede recibir eventos. Es el elemento básico de una interfaz gráfica. Los componentes permiten al usuario interactuar con la aplicación y proporcionar información desde el programa al usuario sobre el estado de la aplicación La principal diferencia, respecto a una clase normal, es que la mayor parte del trabajo lo podemos hacer de forma visual, con el ratón y ajustando las opciones que se nos ofrece en nuestro entorno.

Componentes Existen realmente dos conjuntos de componentes GUI en Java;

abstract window toolkit (AWT) java.awt. Swing la Java Foundation Class (JFC); java.swing.

Componentes AWT Depende de la plataforma, esto quiere decir que la imagen que muestra un componente gráfico depende de su ejecución en un sistema operativo o en otro. Swing aparece en Java 2 y es independiente de la plataforma sobre la que se ejecuta; con swing el aspecto de los elementos de la interfaz gráfica es el mismo en todas las plataformas.

Swing Es el conjunto de clases, interfaces, recursos, etcétera, para la construcción de gráficos, también conocidos como IGU o GUI; contiene tres API: uno para 2D, otro para arrastrar y soltar y el último para facilitar el acceso.

Jerarquía de componentes

Paquetes de las API de Java La biblioteca de clases de Java, que incluye el conjunto de paquetes llamado swing, le permite a los programas Java ofrecer interfaces gráficas de usuario y recoger los datos de entrada del usuario mediante el ratón, el teclado y otros dispositivos de entrada.

Paquetes de las API de Java Swing se puede utilizar para crear aplicaciones para componentes de la interfaz gráfica del usuario como:  Marcos: ventanas con barras de título, barra de menú, botones para maximizar, minimizar o cerrar, etcétera  Contenedores  Botones  Etiquetas  Campos de texto y áreas de texto  Listas desplegables Swing ofrece:  Componentes comunes de la interfaz de usuario  Contenedores componentes de interfaz para crear marcos, paneles, ventanas, menús, barras de menús, etcétera

 Para usar las clases swing se debe utilizar una instrucción import o una sentencia general como: import javax.swing.* Si un programa incluye la declaración

import javax.swing.JFrame únicamente se puede utilizar la clase JFrame.

Paquetes El conjunto de paquetes de Java es muy grande, hay más de 200 disponibles en Java SE API 6; cada uno está constituido por clases o interfaces; una lista genérica de paquetes se encuentra en:            

Bibliotecas del lenguaje y de utilidades (p.e. java.lang, java. util) Biblotecas base/core (p.e. java.applet, java.io) Bibliotecas de integración (p.e. java.sql, javax.sql) Bibliotecas de interfaces de usuario AWT (API) (p.e. java.awt, java.awt.color) Bibliotecas de interfaces de usuario: Swing API (p.e. javax.swing, javax.swing.event) Biblioteca de invocación remota de métodos (RMI) y CORBA (p.e. java.rmi, java.rmi.CORBA) Biblioteca de seguridad Bibliotecas XML

Swing versus AWT  swing y AWT pueden estar juntos en la misma interfaz, aunque si faltan precauciones en el diseño pudiese haber problemas; para evitarlos, tal vez sea mejor utilizar componentes swing, existe uno para cada componente de AWT. JButton, JFrame

Button, Frame

si omite accidentalmente la J, su programa puede compilarse y ejecutarse, pero la mezcla de componentes swing y AWT pueden conducir a inconsistencias visuales y de comportamiento.

Paquetes Importantes

Creación de un JFrame

Administrador de diseño  La disposición de componentes no se suele determinar de modo absoluto, es decir, no se ponen en coordenadas expresadas en pixeles para evitar depender del dispositivo en el que se ubican los componentes gráficos; la distribución de componentes se hace con los gestores de posicionamiento que los distribuyen en posiciones relativas; los gestores de posicionamiento son objetos que implementan la interfaz LayoutManager

Hay definidos hasta siete tipos de layouts y son los siguientes: FlowLayout, BorderLayout, GridLayout, BoxLayout, GridBagLayout, CardLayout y SpringLayout;

BorderLayout  Divide al contenedor en cinco zonas: los cuatro puntos cardinales y el centro; los componentes distribuidos con este gestor se ubican en las posiciones: superior (north), inferior (south), derecha (east), izquierda (west) y centro (center); estas posiciones se representan por las constantes:  BorderLayout.CENTER, BorderLayout.NORTH, BorderLayout.EAST, BorderLayout.SOUTH y BorderLayout.WEST. BorderLayout(int separaHorizontal, int separaVertical);

Practica import javax.swing.*; import java.awt.*; public class MarcoBorder extends Jframe { static int ANCHO =175; static int ALTO = 100; public MarcoBorder() { super("Mi marco"); add(new JLabel("Norte", SwingConstants.CENTER), BorderLayout.NORTH); add(new JLabel("Sur", SwingConstants.CENTER), BorderLayout.SOUTH); add(new JLabel("Centro", SwingConstants.CENTER), BorderLayout.CENTER); add(new JLabel("Oeste", SwingConstants.CENTER), BorderLayout.WEST); add(new JLabel("Este", SwingConstants.CENTER), BorderLayout.EAST); setSize(ANCHO,ALTO); setVisible(true); }

public static void main(String args[]) { MarcoBorder miMarco = new MarcoBorder(); miMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

FlowLayout  Sitúa los componentes por filas de izquierda a derecha, cuando se completa una fila comienza otra; es el gestor por omisión de los paneles y applets.  La clase FlowLayout dispone de varios constructores, uno de ellos establece la alineación de los componentes: FlowLayout(int alineación); la alineación puede tomar los valores: FlowLayout.RIGHT, FlowLayout.CENTER y FlowLayout.LEFT.  Este otro constructor, FlowLayout(int alin, int sepHztal, int sepVert), establece, además de la alineación, la separación en pixeles de los componentes.

Practica import javax.swing.*; import java.awt.*; public class MarcoBorder extends Jframe { static int ANCHO =175; static int ALTO = 100; public MarcoBorder() { super("Mi marco");

setLayout(new FlowLayout()); add(new JLabel("Primera")); add(new JLabel("Segunda")); add(new JLabel("Tercera")); add(new JLabel("Cuarta")); add(new JLabel("Quinta")); add(new JLabel("Sexta")); setSize(ANCHO,ALTO); setVisible(true); }

public static void main(String args[]) { MarcoBorder miMarco = new MarcoBorder(); miMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

 Realizar 2 ejercicios, uno donde se implemente GridLayout y el segundo donde se implemente BoxLayout:

GridLayout  GridLayout Distribuye los componentes en una rejilla de celdas iguales en forma de cuadrícula; los elementos se ubican de arriba abajo y de izquierda a derecha. Al crear el gestor se pasa el número de filas/columnas que forman la rejilla en la que  se colocan los componentes; los constructores son:  GridLayout(), coloca los componentes en una única fila y única columna.  GridLayout(int f,int c), coloca los componentes en cuadrículas de f filas  por c columnas.  GridLayout(int f, int c, int sepHztal, int sepVert), define la rejilla y establece la separación en pixeles.

BoxLayout  BoxLayout sitúa los componentes en una única fila o una única columna, se asemeja a una caja con orientación horizontal o vertical; el constructor necesita un argumento con el contenedor que va a utilizar y la orientación, la cual puede ser: BoxLayout.X_AXIS o BoxLayout.Y_AXIS. El formato del constructor es: BoxLayout(Container destino, int orientacion)

Componentes de texto

Paquetes Son una forma de organizar grupos de clases. Un paquete contiene un conjunto de clases relacionadas bien por finalidad, por ámbito o por herencia. Los paquetes resuelven el problema del conflicto entre los nombres de las clases. Al crecer el número de clases crece la probabilidad de designar con el mismo nombre a dos clases diferentes. Las clases tienen ciertos privilegios de acceso a los miembros dato y a las funciones miembro de otras clases dentro de un mismo paquete.

Paquetes  La primera sentencia que encontramos en el código fuente de las distintas clases que forman el proyecto es package o del nombre del paquete.  La palabra clave package permite agrupar clases e interfaces. Los nombres de los paquetes son palabras separadas por puntos y se almacenan en directorios que coinciden con esos nombres.

Paquetes/ Librerías.

En Java, las clases se agrupan en paquetes (packages) que definen utilidades o grupos temáticos, y que se encuentran en directorios del disco con su mismo nombre. Para incorporar y utilizar las clases de un paquete en un programa se utiliza la declaración import; Ejemplos: import java.util.Random; import java.util.Date; import java.util.Math;

Paquetes/ Librerías.  El programador puede definir sus paquetes para agrupar las clases creadas; las declaraciones import también sirven para incorporar clases de un paquete creado por el programador; por ejemplo: si ha definido un paquete casa, con las clases Climatizador, Computador, nevera, microondas, se pueden hacer las declaraciones: import nombrePaquete.nombreClase; import nombrePaquete.*;

import casa.Computador; import casa.Nevera; import casa.*;

 Escribir un programa de conversión de temperatura, que convierta de grados Fahrenheit a centígrados. La temperatura en grados Fahrenheit deberá introducirse desde el teclado ( mediante un objeto JTextField). Debe usarse un objeto Jlabel para mostrar la temperatura convertida:  Formula para conversión: 𝟓 𝟗

𝑪𝒆𝒏𝒕𝒊𝒈𝒓𝒂𝒅𝒐𝒔 = x (Fahrenheit -32)

 Modificar el programa anterior para que el usuario pueda elegir el tipo de conversión que desea realizar.  Fahrenheit a Centígrados.  Centígrados a kelvin.  Kelvin a Fahrenheit Sugerencia: usar JRadioButton o JComboBox, para elegir el tipo de conversión , y mostrar el resultado en un JLabel

𝑪𝒆𝒏𝒕𝒊𝒈𝒓𝒂𝒅𝒐𝒔 =

𝟓 ∗(𝑭𝒂𝒉𝒓𝒆𝒏𝒉𝒆𝒊𝒕−𝟑𝟐) 𝟗

𝑭𝒂𝒉𝒓𝒆𝒏𝒉𝒆𝒊𝒕 =

𝟗 ∗(𝑲𝒆𝒍𝒗𝒊𝒏−𝟐𝟕𝟑.𝟏𝟓) +32 𝟓

𝑲𝒆𝒍𝒗𝒊𝒏 = 𝑪𝒆𝒏𝒕𝒊𝒈𝒓𝒂𝒅𝒐𝒔+ 273.15

Paquetes JAVA vs C#

pacakge N1.N2; class A {} class B {}

namespace N1.N2 { class A {} class B {} }

2.3 Creación de componentes (Visuales y no visuales) definidos por el usuario. Componentes Un componente es el elemento básico de una interfaz gráfica. Los componentes permiten al usuario interactuar con la aplicación y proporcionar información desde el programa al usuario sobre el estado de la aplicación. Ejemplos de componentes son: los botones, las barras de desplazamiento, las etiquetas, las listas, las cajas de selección o los campos de texto, entre otros..

2.3 Creación de componentes (Visuales y no visuales) definidos por el usuario.

 Cabe mencionar que los componentes nunca se encuentran de forma aislada, sino agrupados dentro de contenedores. Los contenedores contienen y organizan la situación de los componentes; además, son en sí mismos componentes y como tales pueden ser situados dentro de otros contenedores.

2.3 Creación de componentes (Visuales y no visuales) definidos por el usuario. Componentes Visuales. Como su nombre lo indica son aquellos que se mantendrán visibles ante la apreciación del usuario, en el momento de la ejecución de dicha aplicación.

Componentes Visuales

Componentes Visuales

2.3 Creación de componentes (Visuales y no visuales) definidos por el usuario. Componentes No visuales. Son aquellos componentes capaces de trabajar en segundo plano, o fuera de la vista del usuario.

Uso de componentes (visuales y no Visuales) Componentes Visuales.  Para realizar captura de datos.  Mostrar resultados de Consultas.  Mensajes de Alerta

Componentes No visuales.  Para ejecutar instrucciones controladas por periodos de tiempos definidos por el usuario.  Realizar conexiones a diversos dispositivos, por medio de puertos.  Ejecutar procesos en segundo plano

Actividad

 Resolver el siguiente ejercicio implementando el uso de componentes Visuales y no visuales, según convenga.  Considerar los créditos de la siguiente forma: T1 – 5000 T2 -10,000 T3 – 15,000 Otros – 20,000

2.4 Creación de paquetes / librerías definidas por el usuario.

Fuentes de información

 Sharp, John, Visual C# 2008, 1 Edición, Anaya Multimedia, España, 2008  Herbert Schildt, Java Manual De Referencia 7a. Ed., 7ª Edición, Mcgraw Hill, México, 2008  John Dean, Introducción A La Programación Con Java, 1, Mcgraw Hill, México, 2009  Deitel Y Deitel, Java Cómo Programar, 7ª Edición, Prentice Hall, México, 2008  Deitel Y Deitel, C / C++ Y Java Cómo Programar, 4ta Edición, Prentice Hall, México, 2004  Andrea, Edgar D, Java 2: Curso De Iniciación, 1era Edición, Inforbook's Ediciones, España, 2006  http://www.programacion.com/java/tutorial/ags_j2me/  http://leo.ugr.es/J2ME/TOOLS/index.html