Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp Incluyen programas tareas ejemplo y aplicación arreglos y Access.
CONTENIDO
Sección: AC4 Revisión: 05 Abril 2009
UNIDAD I: ELEMENTOS BASICOS 1.- INTRODUCCION 2.- MODELO DE SOLUCION 3.- VARIABLES 4.- TIPOS DE DATOS 5.- CLASES NUMERICAS 6- OPERADORES ARITMETICOS 7.- OPERADOR CAST Y CONVERSIONES 8.- JERARQUIA DE OPERACIONES 9.- APLICACIONES 10.- APLICACIONES POR CONSOLA 11.- APLICACIONES (CONTINUACION) II UNIDAD .- APLICACIONES VISUALES Y APPLETS 1.- APLICACIONES VISUALES Y APPLETS 2.- FRAME PROPIEDADES 3.- FRAME Y METODOS 4.- ENTRADA/SALIDA 5.- LABEL 6.- TEXTFIELD 7.- BUTTON 8.- PRACTICA 9.- LAYOUTS 10.- PANELES 11.- PANEL 12.- JSPLITPANE 13.- JSCROLLPANE 14.- JTABBEDPANE 15.- JTOOLBAR 16.- JCOMBOBOX III UNIDAD: APLICACIONES EN RED 1.- INTRODUCCION 2.- APPLET Y JAPPLET 3.- APPLET Y JAPPLET CONTINUACION 4.- SERVLETS 5.- SERVLETS CONTINUACION 6.- JAVA SERVER PAGE (JSP) 7.- JSP CONTINUACION I 8.- JSP CONTINUACION II
Alejandro Huapaya Sànchez
Pág. 1 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp Incluyen programas tareas ejemplo y aplicación arreglos y Access.
CONTENIDO
Sección: AC4 Revisión: 05 Abril 2009
IV UNIDAD.- CONTROL DE PROGRAMA 1.- INTRODUCCION 2.- INSTRUCCIONES CONDICIONALES 3.- CONDICIONES SIMPLES 4.- INSTRUCCION IF() 5.- IF() CONTINUACION 6.- CONDICIONES COMPUESTAS 7.- INSTRUCCION SWITCH() 8.- COMPONENTES VISUALES DE SELECCION Y DECISION 9.- COMPONENTE CHECKBOX 10.- COMPONENTE JRADIOBUTTON 11.- MENUS 12.- POPUPMENU 13.- CICLO FOR 14.- CICLO WHILE 15.- CICLO DOWHILE 16.- CONCLUSIONES DE CICLOS V UNIDAD.- ARREGLOS 1.- INTRODUCCION 2.- ARREGLOS TRADICIONALES 3.- ARREGLOS TIPO LISTA 4.- LISTAS(CONTINUACION) 5.- COMPONENTE LIST 6.- LISTAS EN SEVLETS Y JSP 7.- ARREGLOS TIPO TABLA VI UNIDAD.- OOP 1.- PROCEDIMIENTOS Y FUNCIONES 2.- PARAMETROS 3.- VARIABLES LOCALES Y GLOBALES 4.- FUNCIONES 5.- INT A OOP 6.- CLASES 7.- CLASES PROPIAS VII UNIDAD.- REGISTROS Y ARCHIVOS SECUENCIALES 1.- INTRODUCCION 2.- REGISTROS 3.- ARCHIVOS 4.- ARCHIVO SECUENCIAL Alejandro Huapaya Sànchez
Pág. 2 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp Incluyen programas tareas ejemplo y aplicación arreglos y Access.
CONTENIDO
Sección: AC4 Revisión: 05 Abril 2009
5.- GRABACION 6.- LECTURA 7.- BUSQUEDA 8.- FILTROS O CONDICIONES 9.- BAJAS O ELIMINACION 10.- EDICION O MODIFICACION IX.- BASES DE DATOS 1.- INTRODUCCION 2.- ACCESS Y ODBC 3.- CONSULTA 4.- INSERCCION 5.- BUSQUEDA 6.- FILTROS O CONDICIONES 7.- BAJAS O ELIMINACION 8.- EDICION O MODIFICACION X UNIDAD.- MULTIPROCESAMIENTO
Alejandro Huapaya Sànchez
Pág. 3 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
JAVA 1.- INTRODUCCION En el mundo moderno, las necesidades de información se han incrementado bastante en la vida diaria de los individuos asi como de las organizaciones. Esta nueva necesidad se esta cubriendo con la integracion y participacion personal y de las empresas, hacia la red de redes, el Internet I, y esperen a internet2. Nuevos paradigmas de programacion se ocupan para la creacion de nuevos sisJAVA TEMA s y necesidades creativas de informacion. Java un lenguaje de programacion moderno implementado en su versión final por la compañía www.java.sun.com a a finales de 1996, se ha convertido en el lenguaje estandar, para la construccion de aplicaciones basadas en internet. Los nuevos sisJAVA TEMA s de información son costosos en tiempos y recursos, la solución moderna de sisJAVA TEMA s de información exigen nuevas herramientas y metodologías para resolver rápida, económica y eficiente los problemas de información planteados por las organizaciones. Aun mas el pleno potencial del hardware no es aprovechado plenamente y existe un considerable retraso con el software y sus aplicaciones, generando lo que se conoce como "crisis del software". En programación tradicional, modular o estructurada un programa describe una serie de pasos a ser realizados para la solución de un problema, es decir es un algoritmo. En programación orientada a objetos ( OOP ) un programa es considerado como un sisJAVA TEMA de objetos interactuando entre sí, ambientes de desarrollo visuales facilitan aun más la construcción de programas y solución de problemas, porque permiten abstraer al ingeniero de software de todo el GUI (interfase gráfica) del problema, que constituye más del 60% del código normal de un programa. Es decir, en programación modular o estructurada un problema sencillo de información es descompuesto en una serie de módulos(llamados procedimientos o funciones) donde cada uno de ellos realiza una tarea específica, por ejemplo uno de ellos captura los datos, otro resuelve operaciones, etc. En OOP todo problema aun aquellos sencillos de información, se consideran y resuelven como módulos de código gigante (clase) que contiene todo el código necesario(variables, procedimientos, funciones, interfaces, etc.) para solucionar el problema. En programación visual( que también es heredera de OOP ),la interfase con el usuario( pantallas) son generadas por el propio compilador y el ingeniero de software solo se concentra en resolver el problema planteado. En programacion java basica, se tiene la mezcla de lo mejor de estos tres mundos, es decir construimos programas, aplicaciones y sisJAVA TEMA s de informacion usando tecnivas estructuradas, contruyendo objetos y diseñando sisJAVA TEMA s graficos, y todo orientado a la construcción de sisJAVA TEMA s de información basados en redes de cualquier tipo o tamaño. 2.- JAVA MODELO DE SOLUCION En general un problema de información es posible entenderlo, analizarlo y descomponerlo en todos sus componentes o partes que de una u otra manera intervienen tanto en su planteamiento como en su solución. Alejandro Huapaya Sànchez
Pág. 4 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
Una herramienta rápida que nos permite descomponer en partes un problema para su solución, es el llamado modelo de solución, este consiste de una pequeña caja que contiene los tres elementos más básicos en que se puede descomponer cualquier problema sencillo de información, estas tres partes son: a. LA PRIMERA PARTE son todos los datos que el computador ocupa para resolver el problema, estos datos son almacenados internamente en la memoria del computador en las llamadas variables de entrada. b. LA SEGUNDA PARTE son todas las operaciones generalmente algebraicas necesarias para solucionar el problema, generalmente esta parte del modelo es una formula (o igualdad matemática, ej. X= y + 5). c. LA TERCERA PARTE es el resultado o solución del problema que generalmente se obtiene de la parte de operaciones del modelo y dichos datos están almacenados en las llamadas variables de salida. En resumen para todo problema sencillo de información es necesario plantearse las siguientes preguntas: * Que datos ocupa conocer el computador para resolver el problema y en cuales variables de entrada se van a almacenar ? * Que procesos u operaciones debe realizar el computador para resolver el problema planteado ? * Que información o variables de salida se van a desplegar en pantalla para responder al problema planteado originalmente? Como nota importante no confundir los términos datos, variables e información; Datos se refiere a información en bruto, no procesada ni catalogada, por ejemplo "Tijuana", "calle primera # 213","15 años", " $2,520.00", etc. Variables es el nombre de una localidad o dirección interna en la memoria del computador donde se almacenan los datos, ejemplo de variables para los casos del inciso anterior, CIUDAD, DIRECCION, EDAD, SUELDO, ETC. Información son datos ya procesados que resuelven un problema planteado. EJEMPLO DE MODELO DE SOLUCION Construir un modelo de solución que resuelva el problema de calcular el área de un triángulo con la formula área igual a base por altura sobre dos. ENTRADA
Operación
Salida
BASE ALTURA
AREA= BASE * ALTURA / 2
AREA
PROBLEMA 2.- CONVERTIR LA EDAD EN AÑOS DE UNA PERSONA A MESES. PROBLEMA 3.- CONVERTIR PESOS A DOLARES. PROBLEMA 4.- CALCULAR EL AREA DE UN CIRCULO CON LA FORMULA AREA = PI * RADIO2 PROBLEMA 5.- EVALUAR LA FUNCION Y = 5 X2 – 3X + 2 PARA CUALQUIER VALOR DE X. Observar para el caso de constantes fijas o conocidas (PI) no se debe dar como dato de entrada su valor, en cambio colocar directamente su valor dentro de la formula, en la parte de operaciones del problema.
Alejandro Huapaya Sànchez
Pág. 5 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
Pero recordar también que existirán problemas sencillos donde: No se ocupan entradas o no se ocupan operaciones, pero todos ocupan salida. Una formula grande o muy compleja puede ser más segura y fácil de resolver, si es descompuesta y resuelta en partes, juntando al final los parciales para obtener el resultado final. Un problema puede tener más de una solución correcta. El problema no esta suficientemente explicado o enunciado, entonces, estudiarlo, analizarlo y construirlo de manera genérica. TAREAS JAVA Construir los modelos de solución de los siguientes problemas para construir despues programas java: PROBLEMA 6.- Convertir millas a kilómetros(caso normal) PROBLEMA 7.- Convertir 125 metros a centímetros(no ocupa entradas) PROBLEMA 8.- Se calcula que en promedio hay 4.7 nidos en cada árbol en la UABC, también se calcula que en cada nido existen un promedio de 5.8 pájaros, se pide calcular la cantidad total de nidos y de pájaros en los 227 arboles que existen en la UABC. (no ocupa entradas) PROBLEMA 9.- La gorda Sra. López y sus 8 hijos solo compran una vez al mes su mandado en conocido supermercado, en dicha tienda el kilogramo de frijol cuesta $8.75, el paquete de tortillas cuesta $3.55 y el frasco de café vale $14.25, si solo compran de estos tres productos para su mandado, calcular su gasto total. ( problema no claro) PROBLEMA 10.- Capturar y desplegar los cinco datos mas importantes de un automóvil(no ocupa operaciones) PROBLEMA 11.- La distancia Tijuana - Ensenada es de 110 kilómetros. Si un automóvil la recorre a una velocidad constante de 30 millas por hora, cuanto tiempo tarda en llegar. ( 1 milla = 1.609 Km.) (dos maneras correctas de resolverlo). PROBLEMA 12.-Evaluar la función Y = 3X2 + 2X – 5 para cualquier valor de x.(caso normal). PROBLEMA 13.-Evaluar la función Y = – 5X3 – 3X2 + 8 para cuando x vale 4 . (no ocupa entradas). 3.- JAVA VARIABLES Identificadores son conjuntos de letras y/o números que se utilizan para simbolizar todos los elementos que en un programa, son definibles por el usuario (programador o ingeniero de software) del mismo, como son las variables donde se almacenan datos, funciones( pequeños módulos con código), etiquetas, clases, objetos, etc. En java un identificador es una palabra compuesta de letras y/o números de hasta 32 caracteres significativos, empezando siempre con una letra. Una variable se define como un identificador que se utiliza para almacenar todos los datos generados durante la ejecución de un programa. En java jsp y servlets existen ciertas reglas en cuanto a variables: • Claras y con referencia directa al problema. • No espacios en blanco, ni símbolos extraños en ellas. • Se pueden usar abreviaturas, pero solo de carácter general. No deben ser palabras reservadas del lenguaje. Ejemplos de buenas variables: Nombre, Edad, SdoDiario, IngMensual, Perímetro, Calif1, etc. Alejandro Huapaya Sànchez
Pág. 6 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
4.- TIPOS DE DATOS A toda variable que se use en un programa, se le debe asociar (generalmente al principio del programa) un tipo de dato específico. Un tipo de dato define todo el posible rango de valores que una variable puede tomar al momento de ejecución del programa y a lo largo de toda la vida útil del propio programa. Los tipos de datos más comunes en java son: Primitive Data Types Keyword
Description
Size/Format
byte
Byte-length integer
8-bit two's complement
short
Short integer
16-bit two's complement
int
Integer
32-bit two's complement
long
Long integer
64-bit two's complement
(integers)
(real numbers) float
Single-precision floating point
32-bit IEEE 754
double
Double-precision floating point
64-bit IEEE 754
(other types) char
A single character
16-bit Unicode character
boolean
A boolean value (true or false)
true or false
•
TABLA TOMADA DE JAVA.SUN.COM DOCUMENTATION
Como se observa es muy similar a las de c o c++. Para el caso de strings se debera usar la Clase String que tiene dos constructores, de momento entenderemos esto ultimo como dos maneras de crearse, ej; a. String nombre= new String(); b. String ciudad= new String("Tijuana"); Con JAVA en este ultimo caso se crea la string y se inicializa con un dato o valor. 5. JAVA CLASES ESPECIALES En java como lenguaje de programacion orientado a objetos, existen aparte de la clase String, vista en el JAVA TEMA anterior cuatro clases especiales, desendientes de la clase numbers, que contienen una serie de metodos que facilitan la interaccion con los usuarios de nuestras aplicaciones en captura y despliegue de datos numericos. Alejandro Huapaya Sànchez
Pág. 7 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
Sin embargo su caracteristica mas importante a tomar en cuenta, es que objetos numericos derivados de estaS clase, no pueden entrar a operaciones DIRECTAMENTE, ni recibir el resultado de operaciones. Class Integer public final class java.lang.Integer extends java.lang.Number { // Fields public final static int MAX_VALUE; public final static int MIN_VALUE; // Constructors public Integer(int value); public Integer(String s); // Methods public double doubleValue(); public boolean equals(Object obj); public float floatValue(); public static Integer getInteger(String nm); public static Integer getInteger(String nm, int val); public static Integer getInteger(String nm, Integer val); public int hashCode(); public int intValue(); public long longValue(); public static int parseInt(String s); public static int parseInt(String s, int radix); public static String toBinaryString(int i); public static String toHexString(int i); public static String toOctalString(int i); public String toString(); public static String toString(int i); public static String toString(int i, int radix); public static Integer valueOf(String s); public static Integer valueOf(String s, int radix); } Esta clase convierte un dato de tipo int a un objeto. Este objeto contiene un solo campo de tipo int. Pero tambien el objeto contiene una serie de metodos para convertir un valor int a una String y tambien para convertir una String a int. Ademas de otros metodos de igual utilidad.
Alejandro Huapaya Sànchez
Pág. 8 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
** Clase y notas tomadas directamente de java.sun Class Double public final class java.lang.Double extends java.lang.Number { // Fields public final static double MAX_VALUE; public final static double MIN_VALUE; public final static double NaN; public final static double NEGATIVE_INFINITY; public final static double POSITIVE_INFINITY; // Constructors public Double(double value); public Double(String s); // Methods public static long doubleToLongBits(double value); public double doubleValue(); public boolean equals(Object obj); public float floatValue(); public int hashCode(); public int intValue(); public boolean isInfinite(); public static boolean isInfinite(double v); public boolean isNaN(); public static boolean isNaN(double v); public static double longBitsToDouble(long bits); public long longValue(); public String toString(); public static String toString(double d); public static Double valueOf(String s); } ** La misma fuente y las mismas notas de la clase anterior Class Float public final class java.lang.Float extends java.lang.Number { // Fields public final static float MAX_VALUE; public final static float MIN_VALUE;
Alejandro Huapaya Sànchez
Pág. 9 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
public final static float NaN; public final static float NEGATIVE_INFINITY; public final static float POSITIVE_INFINITY; // Constructors public Float(double value); public Float(float value); public Float(String s); // Methods public double doubleValue(); public boolean equals(Object obj); public static int floatToIntBits(float value); public float floatValue(); public int hashCode(); public static float intBitsToFloat(int bits); public int intValue(); public boolean isInfinite(); public static boolean isInfinite(float v); public boolean isNaN(); public static boolean isNaN(float v); public long longValue(); public String toString(); public static String toString(float f); public static Float valueOf(String s); } *** La misma fuente y notas anteriores Class Long public final class java.lang.Long extends java.lang.Number { // Fields public final static long MAX_VALUE; public final static long MIN_VALUE; // Constructors public Long(long value); public Long(String s); // Methods public double doubleValue();
Alejandro Huapaya Sànchez
Pág. 10 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
public boolean equals(Object obj); public float floatValue(); public static Long getLong(String nm); public static Long getLong(String nm, long val); public static Long getLong(String nm, Long val); public int hashCode(); public int intValue(); public long longValue(); public static long parseLong(String s); public static long parseLong(String s, int radix); public static String toBinaryString(long i); public static String toHexString(long i); public static String toOctalString(long i); public String toString(); public static String toString(long i); public static String toString(long i, int radix); public static Long valueOf(String s); public static Long valueOf(String s, int radix); } *** fuente JAVA SUN 6.- OPERADORES ARITMETICOS Un operador es un símbolo especial que indica al compilador que debe efectuar una operación matemática o lógica. Java reconoce los siguientes operadores aritméticos: Operador Operación + Suma - Resta * Multiplicación / División % Residuo o Módulo Como notas importantes a recordar siempre; En problemas de division entre enteros, java trunca la parte residual, ej; Desplegar---> 13/5 ---> el resultado es 2 Mas adelante se dira como resolver este problema. Para resolver los problemas de potencias y raíces, se usan ciertas instrucciones especiales que proporciona el lenguaje, llamadas funciones matemáticas, en java existe toda una librería de instrucciones o funciones matemáticas. Recordar que todas las funciones reciben uno o más datos o valores y regresan siempre un resultado, una de estas funciones matemáticas es: Alejandro Huapaya Sànchez
Pág. 11 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
import java.lang.math ; public static double pow(double a, double b); Esta función ocupa dos valores o datos( base y exp) ambos de tipo double, y regresa un resultado también de tipo double, ejemplo; •
resolver el problema de calcular
import java.io.*; import java.lang.Math; public class ejemplo1 {public static void main(String args[]) { double base =5; double exponente=3; double potencia =0; potencia = Math.pow(base, exponente); System.out.println("potencia =" +potencia); }// cerrar main } //cerrar clase En java jsp y servlets para resolver el problema de raíces, se aprovecha una de las mas elementales y conocida de las leyes de exponentes que dice:
n a m
= a m/ n
Es decir una raíz cualquiera se puede transformar a una potencia con un exponente fraccionario. Ejemplo: problema
y = 3 x esto es equivalente a
y = 3⋅x1 /2
entonces
// Usando la función pow y = 3*Math.pow(x, 0.5); • En este ejemplo no funcional se esta dando por supuesto que no interesa el tipo de dato que requiere la función pow() para trabajar correctamente Para realizar operaciones con objetos numéricos, recordar que no se pueden hacer directamente operaciones con ellos ni tampoco pueden recibir resultados en ellos, lo que se debe hacer es usar una variable temporal de tipo apropiado, hacer la operacion con dicha variable y al final si se quiere convertir esta variable al objeto numerico apropiado(esto ultimo se vera en el siguiente JAVA TEMA ), como lo muestra el siguiente ejemplo; Integer alfa = new Integer(20); Double zeta = new Double(5); double alfa1=0, zeta1=0; alfa1=alfa.doubleValue(); zeta1=zeta.doubleValue(); alfa1=alfa1 + zeta1; desplegar alfa1; Como se observa se crearon dos objetos numericos, luego dos variables numericas normales, luego estas dos ultimas variables se cargan con los objetos numericos que emplean metodos propios para convertirlos a datos normales. Alejandro Huapaya Sànchez
Pág. 12 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
En java jsp y java servlets la libreria maJAVA TEMA tica completa incluye: Class Math public final class java.lang.Math extends java.lang.Object { // Fields public final static double E; public final static double PI; // Methods public static double abs(double a); public static float abs(float a); public static int abs(int a); public static long abs(long a); public static double acos(double a); public static double asin(double a); public static double atan(double a); public static double atan2(double a, double b); public static double ceil(double a); public static double cos(double a); public static double exp(double a); public static double floor(double a); public static double IEEEremainder(double f1, double f2); public static double log(double a); public static double max(double a, double b); public static float max(float a, float b); public static int max(int a, int b); public static long max(long a, long b); public static double min(double a, double b); public static float min(float a, float b); public static int min(int a, int b); public static long min(long a, long b); public static double pow(double a, double b); public static double random(); public static double rint(double a); public static long round(double a); public static int round(float a); public static double sin(double a); public static double sqrt(double a); public static double tan(double a); }
Alejandro Huapaya Sànchez
Pág. 13 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
fuente tomada de java sun com
7.- JAVA OPERADOR CAST y CONVERSIONES En java se puede forzar un dato, variable o una expresión a convertirse o cambiarse a un nuevo tipo de dato. El operador cast realiza este proceso, es decir convierte datos, variables o expresiones a un nuevo tipo de dato, su formato es: (nvotipo) dato , var, exp; Ejemplo: // declaración int alfa; // Asignación alfa = 20; // Cambio de tipo (float) alfa; Ejemplo: (int) 3.1416; •
en este ejemplo se está convirtiendo un float a int, recordar que en este caso ya no se tendrán los decimales. • Como nota importante se puede hacer cast solo con tipos de datos, no entre tipos de datos y objetos de una clase numerica. Como nota importante este operador resuelve los dos problemas pendientes: a. El de la división entre enteros. b. El tipo de dato especifico que requieren las funciones. Ejemplos: a) // Declaración float alfa; // Operación alfa = (float)23/5; // Pero en estos casos es preferible alfa=23/5.0; En toda división recordar agregar a uno de los dos valores el (.0), solo que los dos elementos sean variables entonces usar el operador cast con una de ellas. // Declaración double potencia; // Operación potencia = Math.pow ( (double)5, (double)3); Como se observa en el ejemplo, se puede usar pow(), directamente con los datos, argumentos o parámetros requeridos , si estos son numéricos, pero transformándolos con el operador cast. Alejandro Huapaya Sànchez
Pág. 14 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
Esto también va a permitir evaluar expresiones matemáticas de manera mas directa y sencilla, solo recordando usar un pow() por cada potencia y cada raíz de la ecuación, ejemplo: sea dentro de un programa esto se resuelve con; // área de declaración de variables double y, x; // área de captura de datos capturar el valor de x; // área de operaciones y = 3 * Math.pow(x, (double)3) - Math.pow(x, (1/3.0)) + 4 * Math.pow(x, (double)2)); // área de despliegue de resultados desplegar x, y En java jsp y java servlets para convertir tipos de datos numericos a objetos numericos y viseversa se deberan usar los metodos que traen las clase numericas de manera apropiada, en general existen tres casos generales difrentes, considerando datos o variables numericas, objetos numericos y strings que es un caso especial y comun: a.1) Variable numerica a variable numerica Usar el operador cast ejemplo: //var to var int alfa1=10; double alfa2=3.1416; alfa1= (int)alfa2; observar que valores decimales deben declararse como doubles a.2) variable numérica a string ejemplo; // var to string int zeta=50; String alfa= String.valueOf(zeta); a.3) variable numerica a objeto numerico caso 1: usando constructor int zeta=80; Float alfa4 = new Float(zeta); caso 2: ya existe el objeto numerico Double alfa5 = new Double(0); Int zeta=30; alfa5=Double.valueOf(String.valueOf(zeta)); b.1) Objeto Numerico a Variable numerica todos los objetos numericos deben crearse inicializados aunque sea a (0) Integer alfa = new Integer(300); Int zeta = alfa.intValue();
Alejandro Huapaya Sànchez
Pág. 15 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
b.2) Objeto numérico a String Float alfa = new Float("3.45"); String beta = new String(" "); Beta = alfa.toString(); b.3) Objeto Numerico a Objeto Numerico Integer alfa=new Integer(50); Double beta=new Double(0); beta = beta.valueOf(alfa.toString()); c.1) String to variable numerica String alfa= new String("3.5"); double beta= 0; beta= Double.parseDouble(alfa); c.2) String to Objeto Numerico String alfa8=new String("50"); Double alfa9=new Double(0); alfa9 = alfa9.valueOf(alfa8); TAREAS JAVA POW (): 1. 2. 2. 8.- JERARQUIA DE OPERACIONES En java jsp y java servlets el problema de no tomar en cuenta la jerarquía u orden de los operadores al plantear y resolver una operación casi siempre conduce a resultados muchas veces equivocados como estos: Ejemplos: a. 2+ 3* 4 = 20(incorrecto) = 14 (correcto) b) si calif1=60 y calif2=80 entonces en programa se usa promedio=calif1 + calif2/2 da como resultado promedio = 100 Recordar siempre, que antes de plantear una formula en un programa se deberá evaluar contra el siguiente: Orden de operaciones: 1.- Paréntesis 2.- Potencias y raíces
Alejandro Huapaya Sànchez
Pág. 16 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
3.- Multiplicaciones y divisiones 4.- Sumas y restas 5.- Dos o más de la misma jerarquía u orden, entonces resolver de izquierda a derecha Nota: Si se quiere alterar el orden normal de operaciones, entonces usar paréntesis. Nota: Tampoco es bueno usar paréntesis de mas en una operación, esto solo indica que no se evalúo bien la formula, como en el siguiente ejemplo;
aquí los paréntesis están de mas, porque por orden de operaciones, multiplicación y división tienen la misma jerarquía y entonces se resuelven de izquierda a derecha, en otras palabras ni que falten paréntesis ni que sobren paréntesis en ningun programa java jsp o java servlet. 9.- APLICACIONES Recordar que JAVA es un lenguaje de programación moderno, que esta enfocado a la construcción de sisJAVA TEMA s de informacion que se ejecutarán en una plataforma muy diversa de procesadores y sisJAVA TEMA s operativos. Esto indica la necesidad de construir diversos tipos de aplicaciones, programas o sisJAVA TEMA s, en general, este curso se centra alrededor de los sguientes tipos de aplicaciones basicas: 1.- Aplicaciones o programas que se ejecuten en "consolas", es decir ambientes del tipo msdos, linux, terminales tontas, etc. 2.-Aplicaciones o sisJAVA TEMA s que se ejecuten en ambientes graficos o de tipo "ventanas:, ejemplo windows, kde o gnome de linux, sistem 8 de apple, etc. 3.- Aplicaciones de tipo APPLETS, que tambien son programas en java que se mandan a una pc remota o lejana, donde esa pc se encarga de correrla o ejecutarla o compilarla y correrla. Este applet lo manda un servidor de paginas(web server) junto con la pagina correspondiente, cada vez que un usuario se conecta al web server y requiere la pagina que contiene el applet. Para el caso de applets, estos se ejecutan no en consola, tampoco en una ventana, sino dentro de el browser de la maquina remota que puede ser el internet explorer de microsoft o el netscape. Por supuesto que el browser del cliente debe estar preparado para ejecutar applets, esto se hace teniendo constantemente actualizado el browser (internet explorer o netscape) y estando sobre todo seguro que en la actualización del browser se incluya la maquina virtual de java. 4.-Aplicacion de tipo SERVLETS, que son programas en java que se ejecutan direcatemente en el servidor de paginas o web server, que al ser invocado o llamado por una pc remota, el web server ejecuta el servlet, ya ejecutado se mandan generalmente los resultados a la maquina remota, estos resultados se mandan en forma de una pagina html, para que la maquina remota los vea en su propio browser. Una vez que el web server o servidor de paginas ejecuta un servlet, lo mantiene vivo o despierto, para responder de manera mas rapida a las peticiones siguientes que se hagan del servlet. 5.- Aplicaciones JSP (Java Server Pages), tecnologia que combina codigo html y codigo java en un solo programa o aplicación, cuando al web server le piden un jsp, lo compila, lo convierte a servlet con todas las implicaciones que se mencionarón en el inciso anterior y manda los resultados a la pc remota que lo solicitó. 6.- Beans y Java Beans, tecnologias de tipo servlet pero que estan especializadas principalmente en mantener enlaces constantes a bases de datos de cualquier marca (access, oracle, mysql, etc), esto
Alejandro Huapaya Sànchez
Pág. 17 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
permite que una serie de varios programas o aplicaciones a la vez esten interactuando con el mismo java bean y por consiguiente con la base de datos. 7.-Existen otra serie de aplicaciones diferntes que se pueden construir con java, tales como aplicaciones rmi, aplicaciones en tiempo real, ejb , pero de momento estan fuera del alcance de estas notas.(estarse pendiente de la siguiente actualizacion de este texto) En general las aplicaciones a desarrollar en este curso ( consola, graficas, applets y servlets, jsp, beans ) todas tienen en comun el lenguaje e instrucciones de programacion de java. El compilador a usar es el SDK (standard development kit) de Java, este kit estandar de desarrollo de programas se encuentra en http://www.java.sun.com/j2se/, de aqui bajarlo e instalarlo. Solo renombrar el folder de default donde se instala a c:\jdk1.3 en lugar del que trae que es c:\Jdk1.3.0_02 10.- APLICACIONES POR CONSOLA Empezemos con el programa clasico de los lenguajes de programacion: class holamundo { public static void main(String[] args) { System.out.println(" HOLA MUNDO "); } // cierra main } // cierra clase 1.- Se debera construir usando el mejor editor del mundo, el NOTEPAD de windows, y se debera grabar en un nuevo folder, con el nombre de la clase (holamundo) y la extension de .java, es decir en notepad usar save as holamundo.java (respetar mayusculas y minusculas que se hayan puesto en la clase), tener cuidado con notepad porque en ocasiones lo graba como holamundo.java.txt, si esto sucede no se puede compilar o sdk informa que no lo encuentra, en notepad seleccionar tipo=all files o irse a msdos y renombrarlo a .java solamente. 2.- Para compilarlo abrir una sesion de msdos dentro de windows y navegar hasta el folder donde esta holamundo.java y compilarlo con la siguiente instruccion: c:\jdk1.3\bin\javac holamundo.java observar que jdk1.3 es el folder que renombraron cuando instalaron el sdk que bajaron de java.sun.com, si no tendran que escribir el nombre largo del folder donde se instalo sdk. JAVAC es el compilador de java y lo que hace aparte de mostrar los errores que puede tener el programa es crear un nuevo archivo con extensión .class, es decir en este ejemplo , en el folder ahora aparte de tener holamundo.java, debera haber un archivo llamado holamundo.class, que es el equivalente a los archivos.exe o executables de windows. 3.-El tercer paso es ejecutar el programa, esto se hace con la instruccion: c:\jdk1.3\bin\java holamundo Observar que ahora es java quien executa y el archivo ya no tiene extension. Un problema muy comun al tiempo de ejecución, es que java mande un mensaje de classnotfound, si esto pasa al querer ejecutar el programa, solo irse al prompt de msdos y escribir la orden: C:>SET CLASSPATH= Y volver a ejecutar el programa. CARACTERISTICAS DE PROGRAMAS O APLICACIONES EN JAVA 1.- Todos los programas en java son y empiezan con una clase.
Alejandro Huapaya Sànchez
Pág. 18 de 125
Desarrollo e Investigación de Sistemas de Cómputo
Tutorial Java Programación Swing Applets Servlet Jsp UNIDAD I ELEMENTOS BASICOS
Sección: AC4 Revisión: 05 Setiembre 2009
2.- Todos los programas en java, deben llevar un metodo principal, llamado main() quien es quien contiene el codigo normal del programa. 3.- La clase y el metodo main deben abrir y cerrar sus propias llaves {} 4.- Las instrucciones terminan con punto y coma (;) 5.- Java tambien es "case sensitive", es decir diferencía mayusculas y minusculas. Problema .- bajar, instalar el sdk java y construir, compilar y ejecutar este programa de ejemplo 11.- APLICACIONES CONSOLA JAVA JSP Y JAVA SERVLETS (CONTINUACION) Entradas y salidas de datos son las tareas mas comunes en cualquier lenguaje de programación. En aplicaciones de consola, estos procesos se ejecutan con las siguientes instrucciones: Programa ejemplo: import java.lang.*; import java.io.*; class ejemplo1 { public static void main(String[] args) { int alfa=0; BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); // se crea teclado que es un objeto para que lea la string que se captura try { System.out.println("dame numero entero: "); //teclado lee una string y la convierte a variable dato numerico normal alfa = Integer.parseInt(teclado.readLine()); } catch(IOException varerror) {System.out.println("error");} alfa= alfa+5; System.out.println(alfa); } // cierra main } // cierra clase En java generalmente todo se maneja mediante objetos, primero se esta creando un objeto llamado teclado que tenga capacidad de leer una string, desde el dispositivo de entrada estandar (teclado o System.in). Se esta usando la instruccion System.out.println(string); para mandar mensajes al ususario Se esta usando el metodo readline() que tiene el objeto teclado, para leer la string del teclado fisico. Se esta usando Integer.parseInt, visto en el JAVA TEMA del operador cast y conversiones, para convertir la string a una variable numerica Se esta usando una instruccion try-catch, para detectar o prevenir problemas con los datos que proporcione el usuario del programa, por ejemplo que en lugar de dar un numero, proporcione letras. Como se observa es bastante sencillo, hacer programas de entrada-salida en consola en java TAREAS JAVA 1.-CONSTRUIR APLICACIONES JAVA DE CONSOLA PARA TODOS LOS MODELOS DE SOLUCION RESUELTOS
Alejandro Huapaya Sànchez
Pág. 19 de 125
UNIDAD 2: JAVA APLICACIONES GRAFICAS JAVA TEMA I.- INTRODUCCION JAVA APPLETS Java es un lenguaje de programacion desarrollado para una multitud de plataformas y procesadores. Aplicaciones o programas graficos deberan tomar en cuenta estos aspectos, para propositos de este libro, consideramos los dos tipos de aplicaciones graficas mas comunes . a. Frames.-Es el equivalente a una aplicacion grafica comun en los diversos lenguajes de programacion visuales, tales como el visualbasic, cbuilder, delphi, etc. b. Applets.-Que en principio se pueden considerar como aplicaciones graficas o visuales normales, excepto que estos applets se empotran o incluyen dentro de una pagina html, misma que a su vez es enviada, junto con el applet a una maquina o pc remota en un intranet o internet, para que dicha maquina remota despliegue la pagina html y ejecute el programa que va en el applet. Modelos de Frames y Applets, se pueden construir usando cualquiera de las dos galerias de componentes visuales que proporciona java, estas librerias visuales, son: 1.- JAVA AWT es la libreria visual mas antigua de java usando esta libreria, se podran construir los tres tipos de programas mas comunes como son FRAME, WINDOW y APPLET. 2.- JAVA SWING es la libreria de componentes visuales mas nueva que proporciona java, usando esta libreria se podran construir los tres tipos de programas o aplicaciones que son JFRAME, JWINDOW y JAPPLET. PARA PROPOSITOS DE ESTE CURSO NOS CONCENTRAMOS EN JAVA FRAME Y JAVA APPLET derivados de JAVA AWT (la libreria visual antigua), por la triste razón de que el modelo de ejecución de estos programas, esta muy asociado al compilador de java que traen los browsers. Otra vez, un applet es un programa un java que se manda a una maquina o pc remota para que lo ejecute o lo corra, cuando este applet le llega a la maquina remota via un browser, dicho browser es quien activa la maquina virtual de java que esta en la pc remota y esta maquina virtual ya da la orden de compilación y ejecución, es decir java programa.applet. Entonces es importante que la maquina virtual de java, que se encuentra en la pc remota, tenga capacidad de incluir todas las librerias de java, como la de math, la de awt, la de lang, etc. La triste historia, es que la maquina virtual de java (revisen su folder program files o windows y ahi la encuentran), les llega a travez de microsoft a las pc remotas, y por el pleito sun-microsoft, estos ultimos estan mandando una maquina virtual de java antigua que solo tiene incluido awt y no swing. Entonces no tiene caso que hagan un programa applet muy bonito con componentes swings, lo manden a una pc remota y esta ultima no lo pueda compilar y ejecutar porque no reconoce la libreria swing. Lo que esta haciendo la compañia sun para resolver este problema es proporcionar a quien lo pida una maquina virtual de java actualizada (llamada webstar ) gratis y a quien la quiera, pero no podemos construir progamas o applets que no vayan a correr en todas las pcs, mientras ellos arreglan el pleito, estamos condenados a usar JAVA AWT UNIDAD 2: JAVA APLICACIONES GRAFICAS JAVA TEMA 2: JAVA FRAME PROPIEDADES JAVA Frame es el componente, control u objeto principal de una aplicacion visual o grafica en java. Es el equivalente a FORM1 en los demas lenguajes visuales, como todos ellos Frame es un objeto normal que se deriva de una clase apropiada, tiene sus propiedades y se le pueden asociar sus eventos. Todo Programa Visual en java, empieza creando un objeto de este tipo, cargando y asignando sus propiedades como lo muestra el siguiente ejemplo: Ejemplo 1) import java.lang.*; import java.awt.*; import java.awt.event.*; public class prog1 { //declaracion, creacion e inicializacion de componentes, objetos y variables // en este caso un solo objeto la ventana
static Frame ventana= new Frame(); // parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setBackground(java.awt.Color.pink); ventana.setSize(200,250); ventana.setVisible(true); // se agrega un escuchador para que cierre la ventana con la x de arriba ventana.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); }; // termina main } // termina clase CORRIDA:
Como ya se indico, todo programa en java, debe ser un clase y toda aplicación o programa debe tener un metodo main. El programa empieza creando un objeto llamado ventana, derivado de la clase FRAME, observar y aprender el formato de creacion, es formato similar para cuando se crean mas objetos. Es el objeto ventana quien debera cargarse con los demas componentes y o controles que tendra la aplicación. En este programa ejemplo, se muestra como asociar eventos a el objeto ventana, primero se quiere aclarar algunas cuestiones. Las propiedades o metodos derivados de la clase superior component de FRAME son: action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, addPropertyChangeListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getInputMethodRequests, getLocation, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isDisplayable, isDoubleBuffered, isEnabled, isFocusTraversable, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move,
nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setForeground, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus Como se observa, en el programa ejemplo solo se usan muy poquitas de ellas. Pero aún hay mas, FRAME tambien puede usar las siguientes propiedades y metodos de la clase superior container y son: add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, setFont, setLayout, update, validate, validateTree De aqui tambien se tomarón algunas para el programa ejemplo. Pero sigue la mata dando, FRAME tambien puede usar metodos y propiedades de la clase superior windows: addWindowListener, applyResourceBundle, applyResourceBundle, dispose, getFocusOwner, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getOwnedWindows, getOwner, getToolkit, getWarningString, hide, isShowing, pack, postEvent, processEvent, processWindowEvent, removeWindowListener, setCursor, show, toBack, toFront Observar que tambien de aqui se tomarón varias para el programa ejemplo. Pero!!! FRAME tambien tiene sus propias propiedades y metodos que son: Method Summary void
addNotify() Makes this Frame displayable by connecting it to a native screen resource.
protected void
finalize() We have to remove the (hard) reference to weakThis in the Vector, otherwise the WeakReference instance will never get garbage collected.
AccessibleContext
getAccessibleContext() Gets the AccessibleContext associated with this Frame.
int
getCursorType() Deprecated. As of JDK version 1.1, replaced by Component.getCursor().
static Frame[]
getFrames() Returns an array containing all Frames created by the application.
Image
getIconImage() Gets the image to be displayed in the minimized icon for this frame.
MenuBar
getMenuBar()
Gets the menu bar for this frame. int
getState() Gets the state of this frame.
String
getTitle() Gets the title of the frame.
boolean
isResizable() Indicates whether this frame is resizable by the user.
protected String
paramString() Returns the parameter String of this Frame.
void
remove(MenuComponent Removes the specified menu bar from this frame.
void
removeNotify() Makes this Frame undisplayable by removing its connection to its native screen resource.
void
setCursor(int cursorType) Deprecated. As of JDK version 1.1, replaced by Component.setCursor(Cursor).
void
setIconImage(Image Sets the image to displayed in the minimized icon for this frame.
void
setMenuBar(MenuBar Sets the menu bar for this frame to the specified menu bar.
void
setResizable(boolean Sets whether this frame is resizable by the user.
void
setState(int Sets the state of this frame.
void
setTitle(String Sets the title for this frame to the specified string.
m)
image) mb) resizable) state) title)
Como notas finales: 1.- tambien de aqui se tomarón algunas para el programa ejemplo. 2.- Todo este material acerca de metodos y propiedades, lo encuentran buscando la clase correspondiente ( en este caso FRAME) en doc y api que estan en el sitio de www.java.sun.com 3.-Es necesario que localizen este material, para que lo tengan a la mano, pueden bajar el api completo del sitio: http://java.sun.com/j2se/1.3/docs.html 4.- Es la ultima vez que se muestran todas la propiedades y metodos de un componente, de aqui en adelante deberan tener la documentación del componente a la mano (inciso anterior), para poder usar un componente a plenitud en sus programas o aplicaciones UNIDAD 2: JAVA APLICACIONES GRAFICAS JAVA TEMA 3: JAVA FRAME Y METODOS En programacion visual java jsp y java servlets a los objetos se les asocia directamente los metodos, por ejemplo:
Ej a) private sub command1_click() codigo a realizar etc Ej b) button1_click() codigo a realizar etc A este modelo de objeto-evento se le conoce como modelo orientado a eventos (event driven). Por supuesto que como buenos programadores como son todos los lectores de estas notas, uno siempre cuida todas las posibles situaciones que se le pueden presentar al usuario, por ejemplo, que tal si la maquina del usuario no tiene raton, la respuesta es sobrecargar el programa o aplicacion de eventos posibles y todos ellos llamando a la misma unidad de codigo es decir: Ej: Command1_click() codigo Command1_keypressed() mismo codigo o llamado Command1_UpArrow() lo mismo etc. Command1_usuarioestornudo() igual etc JAVA usa un modelo nuevo de asociacion de objeto-evento, llamado de "Delegacion de Eventos", en este modelo se crea un objeto especializado en escuchar por eventos e informar a un objeto normal de cuando el evento sucede para que este ultimo active el metodo o codigo necesario para procesar el evento. Objetos escuchadores de este tipo, pueden ser raton, teclado, etc, y existe un objeto de este tipo muy generico, capaz de escuchar hasta cuando el usuario estornuda llamado "ACTION". Cada uno de estos escuchadores, tienen tambien cada uno sus propios metodos, por ejemplo el objeto raton, tiene metodos para detectar el click del raton, o el dobleclick del raton etc, mas adelante se presenta una relacion de estos objetos y los metodos que contienen. En un programa como en el siguiente ejemplo, uno crea el objeto escuchador y se lo agrega el objeto del programa que lo ocupa. import java.lang.*; import java.awt.*; import java.awt.event.*; public class prog2 { //declaracion, creacion e inicializacion de componentes, objetos y variables // en este caso un solo objeto la ventana static Frame ventana= new Frame(); // parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setBackground(java.awt.Color.pink); ventana.setSize(200,150); ventana.setCursor(new Cursor(Cursor.HAND_CURSOR) ); ventana.setVisible(true); // area de asociacion de objetos-escuchadores ventana.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); }} ); // otro escuchador con un evento asociado a FRAME ventana.addKeyListener( new KeyAdapter() { public void keyPressed(KeyEvent e){ ventana.setBackground(java.awt.Color.blue); }} );
// otro escuchador con un evento asociado a FRAME ventana.addMouseListener( new MouseAdapter() { public void mouseExited(MouseEvent e){ ventana.setBackground(java.awt.Color.cyan); ventana.setTitle("adios ratoncito"); }} ); }; // termina main } // termina clase Como se observa al objeto ventana le estamos agregando tres tipos de escuchadores diferentes (windows, raton, teclado) esto se hace con la instrucción(.ADDESCUCHADOR) y a cada escuchador se le esta cargando de codigo o instrucciones a alguno de sus metodos. Para usar ADDESCUCHADOR, se debera crear el objeto-escuchador apropiado usando la instruccion NEW OBJETOLISTENER. Pero observar que en su lugar se uso NEW OBJETOADAPTER, esto es porque si se crea OBJETOLISTENER java exige que se escriban o codifique todos los metodos del LISTENER ( y creanlo son muchos de cada uno)aunque no se ocupen. OBJETOADAPTER es similar que OBJETOLISTENER excepto que en la aplicacion solo se escribe el metodo que realmente se ocupe, en jerga tecnica ADAPTER es LISTENER con metodo que se ocupe sobrecargado. Los principales (no unicos) escuchadores y sus principales metodos son: Escuchador Metodos WINDOW WindowActivated(), WindowClosed(), WindowClosing(), WindowDeactivated(), WindowOpened(). MOUSE MouseClicked(), MouseDragged(), MouseEntered(), MouseExited(), MouseMoved(), MousePressed(). MouseReleased(). KEY KeyPressed(), KeyReleased(), KeyTyped(). POPUPMENU investigar en ayuda de java FOCUS investigar en ayuda de java CONTAINER investigaren ayuda de java COMPONENT investigar en ayuda de java CHANGE investigar en ayuda de java CARET investigar en ayuda de java UNIDAD 2: JAVA APLICACIONES GRAFICAS JAVA TEMA 4: JAVA ENTRADA/SALIDA Procesos de entrada o captura de datos y procesos de salida de información son procesos basicos en cualquier programa o aplicacion de cualquier lenguaje de programacion. Para aplicaciones por consola ya se vieron las instrucciones respectivas, para el caso de aplicaciones visuales, este problema de e/s se resuelve usando componentes o controles especializados en cada una de las tareas respectivas. En particular en java para una aplicacion sencilla se ocupan los siguientes objetos: 1.- Un contenedor apropiado para todos los demas objetos, para este caso un objeto de tipo JAVA FRAME, que ya se analizo en los dos JAVA TEMA s anteriores.
2.-Componentes o controles que permitan desplegar textos o mensajes estaticos, JAVA LABEL. 3.-Componentes o controles que permitan capturar datos y/o desplegar datos o información, JAVA TEXTFIELD. 4.-Componentes o controles que permitan controlar o dirigir las conductas y codigos de los demas elementos de la aplicacion o programa, BUTTON. UNIDAD 2: JAVA APLICACIONES GRAFICAS JAVA TEMA 5.- JAVA LABEL Este componente se utiliza para desplegar textos o mensajes estáticos dentro de las formas, textos tales como encabezados, solicitud al usuario del programa para que proporcione algún dato o información(edad, dame sueldo, etc.), en cierta forma hace las funciones de printf, cout, writeln, print, display, etc., pero solo cuando se consideran en su parte de mensajes. También es un objeto en java y por tanto tiene asociados sus propias propiedades y objetos-eventos, al mismo tiempo como se está usando dentro del objeto FRAME, muchas propiedades que se definan para el objeto FRAME, el objeto Label las va a heredar. Es la propiedad TEXT, la que lleva el contenido del mensaje que se quiere desplegar, misma que se cargara de manera igual que con FRAME, es decir LABEL.setPROPIEDAD(parametros, en muchos de los casos; Algunas de sus propiedades mas importantes son: Background(), Border(), Bounds(), Cursor(), Enabled(), Font(), Foreground(), Name(), Opaque(), Text(), ToolTipText(), Visible() El listado completo de sus propiedades y metodos ya lo deben tener en la documentacion (api) que ya bajarón de java.sun ?o no es asi? Recordar que las propiedades se inicializan y se usan en codigo con .SETpropiedad. Algunos de sus escuchadores con sus metodos mas importantes son: WINDOW: WindowActivated(), WindowClosed(), WindowClosing(), WindowDeactivated(), WindowOpened(). MOUSE: MouseClicked(), MouseDragged(),MouseEntered(), MouseExited(),MouseMoved(), MousePressed(), MouseReleased(). KEY: KeyPressed(), KeyReleased(), KeyTyped(). UNIDAD 2: JAVA APLICACIONES GRAFICAS JAVA TEMA 6.- JAVA TEXTFIELD En Java este componente es un importante componente visual, su función principal es manejar todos los procesos de entrada y salida (input/output) al programa. Este componente TEXTFIELD es el equivalente a las variables en cualquier lenguaje de programación mas la instrucción de captura o despliegue correspondiente, es decir; a) En BASIC, Input Edad -> Text1 b) En PASCAL, Read(Ciudad) -> Text2 c) En C, printf("%d", sueldo) -> Text3 d) En C++, cin.get(nombre,30) -> Text4 e) En Cobol Display metros -> Text5 Su principal propiedad es TEXT(), que es la propiedad que contiene el dato de tipo STRING que se manipulara en los programas o aplicaciones. El dato dentro de esta propiedad es de tipo STRING y por tanto se tendra que convertir a datos numericos normales para poder efectuar procesos numericos con ellos como se vio en el JAVA TEMA de CAST y CONVERSIONES.
Aparte de esta propiedad TEXT, tiene otras propiedades que se pueden inicializar con el comando SET como ya se ha visto en los JAVA TEMA s de FRAME y LABEL. Algunas de sus propiedades mas importantes son: Background(), Border(), Bounds(),Columns(), Cursor(),Editable(), Enabled(), Font(), Foreground(), Name(), Opaque(), Text(), ToolTipText(), Visible() Espero que ya tengan la documentación completa en su disco duro. Recordar que las propiedades se inicializan y se usan en codigo con .SETpropiedad. Algunos de sus escuchadores con sus metodos mas importantes son: WINDOW: WindowActivated(), WindowClosed(), WindowClosing(), WindowDeactivated(), WindowOpened(). MOUSE: MouseClicked(), MouseDragged(),MouseEntered(), MouseExited(),MouseMoved(), MousePressed(), MouseReleased(). KEY: KeyPressed(), KeyReleased(), KeyTyped(). UNIDAD 2: APLICACIONES GRAFICAS JAVA TEMA 7.- JAVA SWING BUTTON En java es el control principal de la forma, contiene el código principal del programa y su activación por el usuario provoca que se realicen los principales procesos del problema planteado (aquí es donde se capturan datos, se realizan operaciones, etc.). De este control se maneja su propiedad TEXT para etiquetarlo con la palabra "OK" o "ACEPTAR" o "EXE" y su evento Click para activarlo, es en dicho evento donde se construye el código del programa. Recordar que aunque no es un control necesario en los programas, ya que el código se puede asociar o pegar a cualquier escuchador-evento de cualquier forma, o control del programa, pero Microsoft ya acostumbro a todos los usuarios al botón OK, de acuerdo, OK. PROPIEDADES Background(), Border(), Bounds(),Columns(), Cursor(),Editable(), Enabled(), Font(), Foreground(), Name(), Opaque(), Text(), ToolTipText(), Visible() Pensaba poner la nota de bajar la documentación de java sun pero me arrepenti. Recordar que las propiedades se inicializan y se usan en codigo con .SETpropiedad. ESCUCHADORES-EVENTOS WINDOW: WindowActivated(), WindowClosed(), WindowClosing(), WindowDeactivated(), WindowOpened(). MOUSE: MouseClicked(), MouseDragged(),MouseEntered(), MouseExited(),MouseMoved(), MousePressed(), MouseReleased(). KEY: KeyPressed(), KeyReleased(), KeyTyped(). UNIDAD II: JAVA APLICACIONES GRAFICAS JAVA TEMA 8: JAVA PRACTICA Se da el ejemplo clasico de programa o aplicacion con entrada/salida, convertir años a meses: import java.lang.*; import java.awt.*; import java.awt.event.*; public class prog3 { //declaracion, creacion e inicializacion de componentes, objetos y variables static Frame ventana= new Frame(); static Label l1 = new Label("dame edad :"); static TextField t1 = new TextField(12);
static Button b1 = new Button("años a meses"); // parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setLayout(new FlowLayout()); ventana.add(l1); ventana.add(t1); ventana.add(b1); ventana.pack(); ventana.setVisible(true); //area de asociacion de objeto-eventos b1.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e){ int alfa = Integer.parseInt(t1.getText()); alfa = alfa * 12; t1.setText(String.valueOf(alfa)); }} ); ventana.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); }} ); }; // termina main } // termina clase CORRIDA:
Notas: El 12 en el constructor de TextField, es un parametro para indicarle de cuantos caracteres tendra la cajita. Se esta usando un layout nuevo (flowLayout), para acomodar los componentes dentro del panel de contenido, un layout (null) es para aomodarlos en coordenadas xy especificas esto no es recomendable por java, en virtud de que el programa o aplicación puede y debe ejecutarse en procesadores-sisJAVA TEMA s operativos diferentes, en el siguiente JAVA TEMA se tratan todos los layouts que tiene java. UNIDAD 2: APLICACIONES GRAFICAS JAVA TEMA 9: JAVA LAYOUTS Recordar que java esta enfocado a programas y aplicaciones que se estaran ejecutando en una plataforma muy amplia de procesadores y sisJAVA TEMA s operativos diferentes. Una cuestión pertinente a este problema, es que el metodo normal de construcción de interfases para el usuario ya no es suficiente, en este metodo normal es comun acomodar los controles o componentes de acuerdo a coordenadas XY predifinadas en la forma, desgraciadamente esto ya no es conveniente, porque diversos sisJAVA TEMA s operativos no tienen las mismas resoluciones que sisJAVA TEMA s operativos "normales". Pare resolver de mejor manera este problema java utiliza "layouts" que son maneras predefinidas de acomodar controles o componentes visuales en formas o ventanas visuales. En ninguno de los layouts se permite especificar una coordenada xy para un componente o control visual, solo se permite especificar si va primero o va al norte etc. Los layouts mas comunes de java son: A) BorderLayout: Arregla los componentes en posiciones CENTER, NORTH, SOUTH, EAST, WEST. Prog ejemplo:
import java.lang.*; import java.awt.*; import java.awt.event.*; public class prog4 { //declaracion, creacion e inicializacion de componentes, objetos y variables static Frame ventana= new Frame(); static Label l1 = new Label("norte"); static Label l2 = new Label("sur"); static Label l3 = new Label("este"); static Label l4 = new Label("oeste"); static Button b1 = new Button("CENTRO"); // parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setLayout(new BorderLayout()); ventana.add(l1,BorderLayout.NORTH); ventana.add(l2,BorderLayout.SOUTH); ventana.add(l3,BorderLayout.EAST); ventana.add(l4,BorderLayout.WEST); ventana.add(b1,BorderLayout.CENTER); ventana.pack(); ventana.setVisible(true); //area de asociacion de objeto-eventos ventana.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); }} ); }; // termina main } // termina clase corrida:
B) FlowLayout: acomoda los componentes de izquierda a derecha, hasta que se acaba la pantalla y entonces empieza en el siguiente renglon: Este layout es el default de FRAME y en el programa3 se esta demostrando. Corrida
C) GridLayout: Acomoda los componentes en columnas y renglones de tamaño fijo, su constructor ocupa como parametros la cantidad de renglones y de columnas. Programa ejemplo:
import java.lang.*; import java.awt.*; import java.awt.event.*; public class prog6 { //declaracion, creacion e inicializacion de componentes, objetos y variables static Frame ventana= new Frame(); static Label l1 = new Label("label1"); static Label l2 = new Label("label2"); static Label l3 = new Label("label3"); static Label l4 = new Label("label4"); static Button b1 = new Button("buton1"); // parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setLayout(new GridLayout(0,3)); ventana.add(l1); ventana.add(l2); ventana.add(l3); ventana.add(l4); ventana.add(b1); ventana.pack(); ventana.setVisible(true); //area de asociacion de objeto-eventos ventana.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); }} ); }; // termina main } // termina clase Corrida
UNIDAD 2: APLICACIONES GRAFICAS JAVA TEMA 10.- PANEL Construir directamente programas o aplicaciones directamente en un FRAME, produce rapidamente un amontonamiento de controles o componentes en la propia forma. Es mas conveniente usar componentes de agrupamiento visuales que faciliten la separación fisica y logica de las diversas partes que componen un programa o aplicación. Estos controles de agrupamiento son conocidos como paneles, aunque en visual basic se conocen como frames (no confundirlos con frame de java). Java tiene los siguientes tipos de paneles, PANEL, SPLITPANE, SCROLLPANE, TABBEDPANE, TOOLBAR Recordar ademas que los panels pueden y deben usar su propio layout para acomodar los componentes visuales que contendra. En particular frame usando su layout acomoda sus paneles y panel usando su layout acomoda los componentes. UNIDAD 2: APLICACIONES GRAFICAS JAVA TEMA 11: JAVA PANEL
Es el componente mas común de agrupamiento su trabajo consiste en ser el contenedor del resto de los componenentes del programa. Su layout de default es FlowLayout. Es tarea común poner en un FRAME una serie de paneles, cada uno de estos enfocado a una tarea especifica: Las propiedades son: Autoscrolls(), Background(), Border(), Bounds(), Cursor(), Enabled(), Font(), Foreground(),Insets(), Layouts(), Name(), Opaque(), ToolTipText(), Visible(), VisibleRect(). Sus escuchadores son: WINDOW: WindowActivated(), WindowClosed(), WindowClosing(), WindowDeactivated(), WindowOpened(). MOUSE: MouseClicked(), MouseDragged(),MouseEntered(), MouseExited(),MouseMoved(), MousePressed(), MouseReleased(). KEY: KeyPressed(), KeyReleased(), KeyTyped(). Programa ejemplo: import java.lang.*; import java.awt.*; import java.awt.event.*; public class prog7 { //declaracion, creacion e inicializacion de componentes, objetos y variables static Frame ventana= new Frame(); static Panel panel1 = new Panel(); static Panel panel2 = new Panel(new GridLayout(0,2)); static Panel panel3 = new Panel(); static Label jl1 = new Label("flow label1"); static Label jl2 = new Label("flow label2"); static Label jl3 = new Label("grid label3"); static Label jl4 = new Label("grid label4"); static Label jl5 = new Label("grid label5"); static Label jl6 = new Label("flow label6"); static Label jl7 = new Label("flow label7"); // parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); // los layouts tambien se pueden asignar con la propiedad .set // agregando controles a paneles panel1.add(jl1);panel1.add(jl2); panel2.add(jl3);panel2.add(jl4);panel2.add(jl5); panel3.add(jl6);panel3.add(jl7); // los panels se tienen que agregar a frame y frame su layout default es borderlayout // abajo coordenadas de posicion en pantalla y tamaño en pixels ventana.setBounds(100,100,200,400); ventana.add(panel1,BorderLayout.NORTH); ventana.add(panel2,BorderLayout.EAST);
ventana.add(panel3,BorderLayout.SOUTH); ventana.pack(); ventana.setVisible(true); //area de asociacion de objeto-eventos ventana.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); }} ); }; // termina main } // termina clase Corrida:
UNIDAD 2: APLICACIONES GRAFICAS JAVA TEMA 12: JSPLITPANE Lo siento JSPLITPANE solo existe en swing, no lo pueden usar en awt, se queda este JAVA TEMA ,para que tengan algunos programas swing de referencia. JsplitPane se usa para dividir con una barrita divisoria dos y solo dos componentes, mismos que pueden ser alineados de izquierda a derecha o de arriba hacia abajo. Sus propiedades mas importantes son: Autoscrolls(), Background(), Border(), Bounds(), Cursor(), DividerSize(), Enabled(), Font(), Foreground(),Insets(), Layouts(), Name(), Opaque(), Orientation(), Text(), ToolTipText(), Visible(), VisibleRect(). Sus escuchadores mas importantes son: WINDOW: WindowActivated(), WindowClosed(), WindowClosing(), WindowDeactivated(), WindowOpened(). MOUSE: MouseClicked(), MouseDragged(),MouseEntered(), MouseExited(),MouseMoved(), MousePressed(), MouseReleased(). KEY: KeyPressed(), KeyReleased(), KeyTyped(). Text: TEXT_VALUE_CHANGED Programa Ejemplo: import java.lang.*;import java.awt.*;import java.awt.event.*;import javax.swing.*; public class prog8 { //declaracion, creacion e inicializacion de componentes, objetos y variables static JFrame ventana= new JFrame(); // abajo se creando con orientacion vertical u horizontal static JSplitPane panel1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); static JLabel jl1 = new JLabel("en split1 label1"); static JLabel jl2 = new JLabel("en split2 label2"); // parte principal de programa public static void main(String[] args)
{ // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setDefaultCloseOperation(ventana.EXIT_ON_CLOSE); //cargando splitpanel panel1 con sus dos componentes panel1.add(jl1); panel1.add(jl2); // cargando la ventana con splitpanel ventana.getContentPane().add(panel1,BorderLayout.CENTER); ventana.pack(); ventana.setVisible(true); //area de asociacion de objeto-eventos }; // termina main } // termina clase Corrida:
UNIDAD 2: APLICACIONES GRAFICAS JAVA TEMA 13: JSCROLLPANE Tambien es swing. Cuando un componente ocupa mucho espacio en pantalla o contiene mucha información, un JSCROLLPANE permite asociarle una pequeña vista o ventana deslizable o corrediza que permite solo que se vea una parte de dicho componente. Un JSCROLLPANE, tambien puede asociarse a otros tipos de panels que contengan muchos componentes. Algunas sus propiedades mas importantes son: Autoscrolls(), Background(), Border(), Bounds(), Cursor(), Enabled(), Font(), Foreground(),Insets(), Name(), Opaque(), ToolTipText(), ViewPortBorder(), Visible(), VisibleRect(). Sus escuchadores mas importantes son: WINDOW: WindowActivated(), WindowClosed(), WindowClosing(), WindowDeactivated(), WindowOpened(). MOUSE: MouseClicked(), MouseDragged(),MouseEntered(), MouseExited(),MouseMoved(), MousePressed(), MouseReleased(). KEY: KeyPressed(), KeyReleased(), KeyTyped(). Programa ejemplo: import java.lang.*;import java.awt.*;import java.awt.event.*;import javax.swing.*; public class prog9 { //declaracion, creacion e inicializacion de componentes, objetos y variables static JFrame ventana= new JFrame(); static JScrollPane panel1 = new JScrollPane(); static JTextField jt1 = new JTextField(80);
// parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setDefaultCloseOperation(ventana.EXIT_ON_CLOSE); //cargando scrollpane panel1 con un componente grandote panel1.setViewportView(jt1); // cargando la ventana con el scrollpanel ventana.getContentPane().add(panel1,BorderLayout.CENTER); ventana.pack(); ventana.setVisible(true); //area de asociacion de objeto-eventos }; // termina main } // termina clase De momento el unico componente grandote a usar es el textfield con muchos caracteres, mas adelante se estudiaran componentes mas apropiados para este tipo de panel. Corrida:
UNIDAD 2: APLICACIONES GRAFICAS JAVA TEMA 14: JTABBEDPANE Tampoco estoy seguro si es de awt tambien, pero pueden intentarlo. Es un componente que permite a un usuario estarse intercambiando entre grupos de componentes que se encuentran en una especie de folders, cada uno de ellos con su propia pestaña(tab). Solo se puede poner un componente en cada folder o tab, asi que de preferencia, si se puede poner un panel en cada folder. Tabs/componentes son añadidos a este panel usando los metodos addTab e insertTab. Cada Tab(folder) tiene asociado un numero indice y el primer tab tiene como indice el numero 0 (cero). Algunas de sus propiedades mas importantes son: Autoscrolls(), Background(), Border(), Bounds(), Cursor(), Enabled(), Font(), Foreground(),Insets(), Name(), Opaque(), SelectedComponent(), SelectedIndex(), TabCount(), TabPlacement(), TabRunCount(), Titles(), ToolTipText(), Visible(), VisibleRect(). Algunos de sus escuchadores-eventos mas importantes son: WINDOW: WindowActivated(), WindowClosed(), WindowClosing(), WindowDeactivated(), WindowOpened(). MOUSE: MouseClicked(), MouseDragged(),MouseEntered(), MouseExited(),MouseMoved(), MousePressed(), MouseReleased(). KEY: KeyPressed(), KeyReleased(), KeyTyped(). Programa ejemplo: import java.lang.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;
public class prog10 { //declaracion, creacion e inicializacion de componentes, objetos y variables static JFrame ventana = new JFrame(); static JTabbedPane folders = new JTabbedPane(); static JPanel panel1 = new JPanel(); static JLabel jl1= new JLabel("label1");static JLabel jl2= new JLabel("label2"); static JLabel jl3= new JLabel("label3");static JLabel jl4= new JLabel("label4"); static JLabel jl5= new JLabel("label5");static JLabel jl6= new JLabel("label6"); // parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setDefaultCloseOperation(ventana.EXIT_ON_CLOSE); //cargando panel con sus componentes panel1.add(jl1); panel1.add(jl2); //cargando tabbedpane con un componente y titulo = componente folders.add(jl3); //cargando tabbedpane con un segundo componente usando indice folders.add(jl4,1); //cargando tabbedpane con un titulo y un componente folders.add(" pestaña 1 ",jl5); //Adds a component represented by a title and no icon Cover method for insertTab folders.addTab("pestaña 2",jl6); //cargando tabbedpane con panel1 folders.add("pestana panel",panel1); // cargando la ventana con el tabbedpane ventana.getContentPane().add(folders,BorderLayout.CENTER); ventana.pack(); ventana.setVisible(true); //area de asociacion de objeto-eventos }; // termina main } // termina clase Corrida: UNIDAD 2: APLICACIONES GRAFICAS JAVA TEMA 15: JTOOLBAR Las mismas dos notas anteriores y no han observado que en swing: La ventana lleva un contentpane() intermedio. no se ocupa un escuchador de ventana para cerrarla, solo un metodo mas de ventana (windows-on-close) que proporciona swing. Este componente es muy usado en programas de windows, su funcion es contener componentes que son usados frecuentemente por el usuario, por ejemplo save, print, etc, para evitar que el usuario tenga que accesar la barra de menu de arriba de la aplicacion. Sus propiedades mas comunes son: Autoscrolls(), Background(), Border(), Bounds(), Cursor(), Enabled(), Font(), Foreground(),Floatable(), Insets(), Layout(), Margin(), Name(), Opaque(), Orientation(), ToolTipText(), Visible(), VisibleRect().
Sus escuchadores-eventos mas comunes son: WINDOW: WindowActivated(), WindowClosed(), WindowClosing(), WindowDeactivated(), WindowOpened(). MOUSE: MouseClicked(), MouseDragged(),MouseEntered(), MouseExited(),MouseMoved(), MousePressed(), MouseReleased(). KEY: KeyPressed(), KeyReleased(), KeyTyped(). Programa ejemplo: import java.lang.*;import java.awt.*;import java.awt.event.*;import javax.swing.*; public class prog11 { //declaracion, creacion e inicializacion de componentes, objetos y variables static JFrame ventana = new JFrame(); //creando toolbar con nombre y orientacion verticaly usando uno de sus 4constructores static JToolBar jtb1 = new JToolBar("mi barrita",1 ); static JButton jb1 = new JButton("boton1 "); static JButton jb2 = new JButton("boton2 "); static JButton jb3 = new JButton("boton3 "); // parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setDefaultCloseOperation(ventana.EXIT_ON_CLOSE); //cargando toolbar panel con sus componentes jtb1.add(jb1); jtb1.add(jb2);jtb1.add(jb3); // cargando la ventana con el toolbar ventana.getContentPane().add(jtb1,BorderLayout.CENTER); ventana.pack(); ventana.setVisible(true); //area de asociacion de objeto-eventos }; // termina main } // termina clase Corrida:
UNIDAD 2: CONTROL DE PROGRAMA JAVA TEMA 16:JAVA JCOMBOBOX SOLO EN SWING. Existen muchas ocasiones en donde el usuario del programa tiene que proporcionar datos que provienen de un conjunto finito y muy pequeño de posibles respuestas, esto significa que cada vez que se ejecute el programa, el usuario estará proporcionando las mismas respuestas. Ejemplo de esta clase de datos, son por ejemplos Municipio en BC, las posibles respuestas solo son (Tecate, Tijuana, Mexicali, Ensenada, Rosarito), otro ejemplo es Sexo (Hombre, Mujer), etc.
Para situaciones como esta, existen componentes que permiten programar por adelantado las posibles respuestas, y el usuario solo debe seleccionar la respuesta apropiada , en lugar de tener que escribirla. Este componente ComboBox nos permite definir en primera instancia un conjunto de datos o valores respuestas asociados a una caja de edición cualesquiera, así ahora el usuario tendrá la oportunidad de seleccionar un dato del conjunto de datos o respuestas ya predefinido. Este componente ComboBox tiene dos partes, una parte de encabezado, para poner el nombre del grupo de respuestas( por ejemplo municipios, sexo, etc.). La segunda parte es la lista de opciones o respuestas que se debe cargar al tiempo de diseño de la ventana. Al momento de ejecución del programa, toda la lista de respuestas, estarán a la vista del usuario, para que este ultimo la seleccione. Recordar que el usuario al momento de ejecución del programa, solo vera el encabezado, para seleccionar su respuesta deberá apretar la flechita que esta a un lado del encabezado. Ejemplo: import java.lang.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class prog16 { //declaracion, creacion e inicializacion de componentes, objetos y variables static JFrame ventana= new JFrame(); static JPanel p1= new JPanel(); static JPanel p2= new JPanel(); static String[] lista={"municipios","tecate","tijuana","ensenada","tecate"}; static JComboBox municipios = new JComboBox(lista ); static JTextField jt1=new JTextField(15); static JButton jb1= new JButton("OK"); // parte principal de programa public static void main(String[] args) { // area de definicion de propiedades de el objeto ventana.setTitle("mi programa"); ventana.setDefaultCloseOperation(ventana.EXIT_ON_CLOSE); ventana.getContentPane().setLayout(new GridLayout(2,0)); //cargando panel1 con combobox y definiendo titulo p1.setLayout(new GridLayout(1,0)); //observar que index cero es el titulo (aunque es un elemento mas) municipios.setSelectedIndex(0); p1.add(municipios); //cargando segundo panel con jbutton y jtextfield p2.add(jb1); p2.add(jt1); ventana.getContentPane().add(p1); ventana.getContentPane().add(p2); ventana.pack(); ventana.setVisible(true); jb1.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e){ // la propiedad getselecteditem() regresa un objeto jt1.setText(String.valueOf( municipios.getSelectedItem() ) ); }} ); }; // termina main } // termina clase Para procesar este componentes solo usar getselecteditem() comor regresa objeto, se puede recibir en objeto de cualquier clase, ya como objeto con los metodos apropiado se puede mandar a variables u otros tipos (recordar operador cast y conversiones)
TAREAS JAVA 1.- REEDITAR ALGUNOS DE LOS PROBLEMAS YA RESUELTOS, AGREGANDO ESTE COMPONENTE EN LOS CASOS DE CAPTURAS QUE LO PUEDEN ADMITIR ( CAPTURAS DONDE YA SE TIENEN LAS ENTRADAS SELECCIONADAS O CONOCIDAS DE ANJAVA TEMA NO).
UNIDAD 3: APLICACIONES EN RED APPLETS JSP SERVLETS JAVA TEMA 1: INTRODUCCION APPLETS JSP SERVLETS En los ultimos años se ha venido presentando una revolución en el terreno de la construccion de programas o aplicaciones. Nuevas tecnologias y tecnicas de programación se han venido desarrollando para aprovechar el nuevo y moderno entorno computacional existente. Este nuevo entorno empieza a popularizarse a mediados de la decada de los 80's cuando en el terreno de las computadoras personales empiezan a aparecer una serie de sisJAVA TEMA s operativos que hacian enfasis en la creación de redes de computadoras personales. En la actualidad y a partir de mediados de los 90's muchas de estas nuevas redes se empiezan a integrar a la red de redes ya existente, el internet. Actualmente mas de 100 millones de computadores personales y mas de 300 millones de usuarios de las mismas estan o son parte de alguna red que esta integrada a internet y los numeros siguen creciendo exponencialmente. El nuevo entorno de programación enfatiza la construcción de programas, aplicaciones o sisJAVA TEMA s de información completos que son puestos y ejecutadas en maquinas especiales llamados servidores, en estos servidores un programa especial llamado servidor de paginas (web server) se encarga de interactuar con los diversos usuarios de la red o redes que puede alcanzar, es decir hay servidores (con su propio web server) que puede atender a una red interna pequeña o una red de una empresa que este dispersa geograficamente o a todas las maquinas que estan en la red de internet. Este proceso de interaccion con los usuarios remotos de esas maquinas, se lleva a cabo principalmente a travez de paginas html y gran parte del proceso de programación actual se centra en construir paginas.html que se mandan al web server, para que este ultimo lo mande al usuario que la este requiriendo. Existen muchas ventajas con este modelo, una de las primeras es que un peqeño programa o aplicación puede ser usado por millones de personas que tengan acceso al servidor y su servidor de paginas. El lenguaje de programación java fue desarrollado e implementado por la empresa sun para facilitar la construcción de programas y aplicaciones para este entorno, de hecho las primeras especificaciones y compiladores de java fueron creados en 1995. En esta unidad se ven de manera basica tres de los tipos de aplicaciones mas comunes que se pueden desarrollar en java para este entorno. Sin embargo antes de empezar con ellas ( applets servlets jsp ) se debe recordar que asi como ha ido evolucionando internet 1 (ya esta en puerta internet 2), existen otra serie de aplicaciones en java que siguen y facilitan este modelo, entre ellas tenemos beans java beans rmi ejb etc. que mas adelante en cuanto se actualize de nueva cuenta este material ya se incluiran. UNIDAD 3: APLICACIONES EN RED APPLETS JAVA TEMA 2: JAVA APPLET Y JAPPLET Applet y JApplet son aplicaciones mas parecidas a Frame y JFRAME que consola, pero que es enviada embebida o empotrada en una pagina html a una computadora o pc remota, para que esta ultima lo ejecute.
En general un applet es un pequeño programa en java, que es ejecutado remotamente, existen algunas restricciones acerca de los applets o programitas que se pueden mandar y ejecutar en maquinas remotas, por ejemplo no se pueden construir o mandar applets que trabajen con el disco duro de la maquina remota, etc. Como se observa de todo lo antes dicho, no solo se trata de crear un applet.java y compilarlo a applet.class, se tendra que crear tambien una pagina.html que tenga una liga y contenga el applet.class Ademas de la pagina.html y applet.class y todos los applets*.class que se generere al compilarlo con javac, se tendran que poner en un servidor de paginas (web server) para que sea el webserver quien mande la pagina, el applet y todas sus clases, al usuario o la maquina remota, para que sea esta ultima sea quien lo compile y ejecute. Es importante recordar que en la maquina remota, su browser debera tener actualizadu su maquina virtual de java, para internet-explorer actualizarlo con la opcion tools, windows update y bjar e instalar la maquina virtual de java mas actualizada que se encuentre. En resumen para resolver de manera adecuada este problema de applets se ocupa lo siguiente: 1.- Un programa o applet.java compilado a programa o applet.class, esto es sencillo y es parte de lo que se estudia en los siguientes JAVA TEMA s. Este applet se compila normalmente con javac y no borrar todos los diferente .class que se generen. 2.- Una pagina html que contenga una referencia o liga que active el applet class, esta pagina.html tambien se hace con el mejor editor de lenguajes de programación del mundo el notepad. 3.- Ya creada la pagina y compilado el applet se puede ejecutar localmente, para probarlo, usando un pograma que se llama appletviewr .exe que se encuentra en el directorio bin de jdk1.3, copiarlo al folder donde estan la pagina html y las clases que genero el javac con el applet Para ver el applet en ejecución dentro de msdos y en el folder donde esta todo ejecutar la orden: C:>appletviewer pagina.html 4.- Tambien se ocupara un servidor de paginas ( web server ) que es un programa que siempre esta corriendo o siendo ejecutado constantemente en la maquina servidora de paginas, y que su trabajo es almacenar las paginas.html y applets del usuario y estarlas mandando a las maquinas o pc remotas que esten accesando el servidor de paginas fisico. maquina). 5.- Ya creada la pagina, las clases y bien probado el applet, hacer un ftp ( revisar que en internet options advanced, este prendida la opcion ftp pasivo) a su www.susitio.programacionfacil.com y subir todo, excepto el applet.java (otra vez, no olvidar subir todas las clases intermedias). UNIDAD 3: JAVA APLICACIONES EN RED JAVA TEMA 3: JAVA APPLET Y JAPPLET CONTINUACION JApplet comparte muchos elementos comunes con Jframe y Jwindows en virtud de que todos estos descienden de swing entre otros elementos a considerar, estan que para
añadir controles, layouts, etc, se deberan hacer al contenpane() ya descrito y no directamente a el objeto de tipo Japplet. Sin embargo, en la actualidad la ejecución de un applet corre a cargo de la pc que la recibe y lamentablemente de sus maquinas virtuales de java instaladas, asi que en realidad mientras microsoft no actualize su maquina virtual para que reconozca swing.japplet, de momento solo reconoce awt.applet, los applets que se construyen en este curso son de awt.applet y no de swing.japplet(que por cierto estan mejores) Mejor un ejemplo: import java.awt.*; import java.applet.*; import java.awt.event.*; public class prog6 extends Applet { Panel p1; Label l1; TextField t1, t2; Button b1; public void init() { p1= new Panel(); p1.setLayout(new GridLayout(0,2) ); l1 = new Label("edad :"); t1= new TextField(15); t2=new TextField(15); b1= new Button("OK"); p1.add(l1);p1.add(t1);p1.add(t2);p1.add(b1); // abajo no se puso el objeto a la propiedad, porque el default es el propio prog6 o applet setLayout(new BorderLayout()); add(p1, BorderLayout.CENTER); b1.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) { double edad= Double.parseDouble(t1.getText()); edad = edad * 12; t2.setText(String.valueOf(edad) ); } } ); } // cierra init } // cierra clase Notas: Solo se usa awt un applet no lleva main() lleva un metodo llamado init() La pagina que lo llama y se lo lleva a la pc remota, lleva el siguiente codigo:
MI PRIMER APPLET Como se observa la directiva que lo activa es