0% encontró este documento útil (0 votos)
214 vistas71 páginas

Curso Videotutorial de Java

El documento proporciona información sobre conceptos básicos de Java como la declaración de paquetes, los tipos de programas Java, las variables, los operadores y las cadenas. Explica que la declaración de paquete debe ser la primera declaración en una clase Java a menos que la clase esté en el paquete predeterminado. También describe los tipos de datos primitivos en Java y los métodos para trabajar con cadenas como length(), toUpperCase(), entre otros.

Cargado por

aa_gg
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
214 vistas71 páginas

Curso Videotutorial de Java

El documento proporciona información sobre conceptos básicos de Java como la declaración de paquetes, los tipos de programas Java, las variables, los operadores y las cadenas. Explica que la declaración de paquete debe ser la primera declaración en una clase Java a menos que la clase esté en el paquete predeterminado. También describe los tipos de datos primitivos en Java y los métodos para trabajar con cadenas como length(), toUpperCase(), entre otros.

Cargado por

aa_gg
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 71

package declaration should be the first statement in a java class,unless the class

is in the default package


----Profundo conocimiento de Java y API core (Colecciones, concurrencia,
gen�ricos�)

########################################
Video 1 (Introducci�n - Uso de NetBeans)
########################################
- Los programas en java usan la extension .java
- Al compilar se crea un archivo con el mismo nombre del programa pero con la
extensi�n .class
- main() --> (el nombre de la clase "main" debe coincidir con el del programa
java)??
- System.out.println("Colocar texto") --> si el texto a imprimir es de un s�lo
caracter, ent. se pueden usar comillas simples dentro del print
- Por defecto, NetBeans busca todos los archivos a los que se haga referencia en el
c�digo, dentro del directorio ra�z del proyecto.

######################################
Video 2 (Anatom�a de un programa Java)
######################################
- String NombreVariable = "Contenido de la variable";
- System.out.println(NombreVariable) (System.out --> The
"standard" output stream. This stream is already open and ready to accept output
data. Typically this stream corresponds to display output or another output
destination specified by the host environment or user.)

- Inicializaci�n de clase (o programa)


------------------------------------
class Anatomia {...
public static void main(String[] args) {...

#####################################################
Video 3 (Tipos de programas Java y uso de argumentos)
#####################################################
- Tipos
=====
Ordenador --> Aplicaci�n Java [clase/m�todo de inicio --> main()]
Web --> JApplet [m�todo de inicio --> init()]
[m�todo paint(): se ejecuta cada vez que se recarga la
p�gina. Dibuja la informaci�n que va a cargar el applet]
[m�todo repaint(): llama al m�todo paint(), de esta
manera no necesita esperar que la pagina sea recargada para su ejecuci�n] (Cap29)

- int numero = 357;


- Math.sqrt(numero)
- Math.abs((ratonX + 35) - botonX) //Returns the absolute value of an int
value (Cap24)
- System.out.println("La raiz cuadrada de " + numero + " es " + Math.sqrt(numero)

- Para definir los argumentos de la clase main (la que servir� de entrada al
proyecto), procedemos de la siguiente manera:
Run --> [Set Project Configuration] --> [Customize...] --> [Categories: Run]
- En [Main Class:], colocamos el nombre de la clase (en caso de haber varios
programas [y clases main] dentro del proyecto, en este campo se define la
clase principal)
- En [Arguments:], colocamos los argumentos separados por espacios
- El resto se dejo en blanco
- Luego se debe ejecutar el "proyecto", si se hace sobre el programa no
funcionar�
OJO: para que tome los argumentos se debe ejecutar el proyecto (bot�n de
flecha verde o tecla F6), si se usa el m�todo RMB y luego 'Run File' fallar�

- System.out.println("Argumento1: " + args[0] + ", argumento2: " + args[1]

- Inicializaci�n de JApplet
-----------------------------------------------------------
Primera forma:
-------------
package anatomia;
import javax.swing.JApplet;
public class EjemploApplet2 extends JApplet {...
public void init() {...
-----------------------------------------------------------
Segunda forma:
-------------
package anatomia;
import java.awt.*;
public class EjemploApplet extends javax.swing.JApplet {...
public void init() {...
-----------------------------------------------------------
Tercera forma: (youtube 03.- Curso...)
--------------
package XXXX; ???
import java.applet.Applet;
import java.awt.Graphics;
� public class CuartaClase extends Applet {
public void paint(Graphics g){
-----------------------------------------------------------

- Hubo que agregar (package NamePackage;) para poder correr el applet

- ***Hay un ejemplo de applet en este cap�tulo ***

##################################################
Video 4 (Variables: Almacenamiento de informacion)
##################################################
- int c = 8*5;
- float Promedio;
- char Variable = 'f';
- String car = "neon";
- tipos de datos:
* byte: -128 and a maximum value of 127 (inclusive)
* short: -32,768 and a maximum value of 32,767 (inclusive)
* int: -231 and a maximum value of 231-1 0 and a maximum value
of 232-1
* long: -263 and a maximum value of 263-1 0 and a maximum value
of 264-1
* float: single-precision 32-bit IEEE 754 floating point
* double: double-precision 64-bit IEEE 754 floating point
* boolean: true and false
* char: '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535
inclusive).

- boolean boton = false;


- En Java las variables pueden empezar por una letra, por "_" o por "$"
- Estandar a usar con las variables, comenzar con minusculas, si hay varias
palabras en el nombre, comenzar cada una con letra may�scula
- Java no tiene constantes, para ello se utilizan los modificadores final y static.

- final indica que la variable siguiente no se puede modificar


- El nombre debe ser en may�sculas, y si posee varias palabras, colocar un
"_" entre ellas
- static convierte a la constante en una constante de clase, de esta manera,
se evita que cada vez que se crea un objeto de dicha clase, tambien se cree la
constante, lo cual puede recargar los programas

- final int PRIMA=3;


- static final float PI=3.1415;

#################################
Video 5 (Trabajar con Operadores)
#################################
- Operadores matematicos: +, -, *, /, %(m�dulo o resto)
- Concatenar strings --> se usa el signo +
- a = 120 % 7;
- Operador de incremento: ++
- Operador de decremento: --
- Los dos operadores previos, pueden ser colocados como sufijo o como prefijo.
- Como prefijo, cambia la variable y de estar esta en una f�rmula, se
continua con la variable incrementada/decrementada en el resto de la f�rmula
- Como sufijo, si la variable esta en una f�rmula, se usa la variable con el
valor actual en la f�rmula, por �ltimo, se incrementa/decrementa la misma.
- Prioridad de las operaciones en Java (hay algunos que no parecen estar bien):
1) ^ (exponenciaci�n)
2) Incremento, Decremento
3) Multiplcaci�n, Divisi�n, M�dulo
4) Suma, Resta
5) Mod,\ (div)
6) ==, <, >, >=, <=, != (Comparaciones)
7) ! (not)
8) && (and)
9) || (or)

- System.out.print("Hola!") --> esta sentencia a diferencia de println, no hace


salto de linea luego de imprimir Hola! en pantalla
- System.out.println("Hola!/n") --> Imprime Hola! y salta de l�nea, posteriormente
agrega otra l�nea en blanco (esto se logra mediante "/n")
- Math.floor(numero); --> entrega el entero menor { [-2 y -1.000001] = -2 } y
{ [1 y 1.99999] = 1 }

- El operador AND utilizado para comparaci�n l�gica puede ser escrito de dos
formas. La diferencia esta en como son ejecutadas internamente:
* primera forma: condici�n1 && condici�n2 --> si condici�n1 es falsa
entonces no se molesta en verificar condici�n2
* segunda forma: condici�n1 & condici�n2 --> si condici�n1 es falsa de
igual forma verifica condici�n2
- El operador OR utilizado para comparaci�n l�gica puede ser escrito de dos formas.
La diferencia esta en como son ejecutadas internamente:
* primera forma: condici�n1 || condici�n2 --> si condici�n1 es true
entonces no se molesta en verificar condici�n2
* segunda forma: condici�n1 | condici�n2 --> si condici�n1 es true de
igual forma verifica condici�n2
#####################################
Video 6 (Trabajar con Objetos String)
#####################################
- Las variables tipo String son realmente objetos de la clase String. Es por ello
que String comienza con "S may�scula".
De ah� que estos objetos tengan m�todos, los cuales se estudiar�n posteriormente.

- El contenido de estas variables se asigna mediante comillas dobles


- Una variable tipo String se puede declarar de las siguientes tres formas:
* String Test = new String(); --> Este es el m�todo expl�cito!???
Test = "Prueba";

* String Test = new String("Prueba"); --> Esta es otra forma del m�todo
expl�cito!???

* String Test="Prueba"; --> Esta es la forma habitual (m�todo


impl�cito)!???

- A diferencia de String, el tipo de dato char s�lo puede poseer un caracter, el


cual ser� asignado mediante comillas simples.
- El caracter backslash (\), se utiliza para incluir caracteres especiales dentro
de un string.
Por ejemplo:
* \' --> comillas simples
* \" --> comillas dobles
* \\ --> barra inclinada
* \t --> tab
* \b --> retroceso
* \r --> retorno carro
* \f --> salto de l�nea
* \n --> nueva l�nea

- Si no se inicializa una variable y se trata de usar su contenido, se generar� un


error.
- var+="php"; --> equivale a var = var + "php"; --> tambien puede ser: -= o
%=

- Operaci�n con char (capitulo 9)


* char let = letras[contador2];
if ( (let >= 'A' ) && (let <= 'Z' ) ) {
contadorLetras[let - 'A' ]++; --> ojo a la resta de los dos
caracteres (juega con los valores ASCII).
* System. out.println('B' - 'A'); --> imprime la diferencia de los
c�digos ASCII de cada caracter

- M�todos de Strings:
* var1.equals(var2); --> devuelve true si var1=var2, en caso
contrario devuelve false
* var1.length(); --> devuelve el n�mero de caracteres de la
variable var1
* var1.toUpperCase(); --> coloca todos los caracteres de la variable
var1 en may�sculas
* var1.toLowerCase(); --> coloca todos los caracteres de la variable
var1 en min�sculas
* var1.indexOf("Cadena"); --> devuelve la posici�n en que aparece el
String "cadena" dentro de la variable var1. Devuelve -1 si no existe. Recordar que
la primera posici�n es 0.
* var1.indexOf('z');
* var1.toCharArray(); --> devuelve un array de tipo char, cuya
dimensi�n es la longitud del string var1 y sus valores son cada uno de los
caracteres del string (Capitulo 9)
* var1.charAt(0); --> entrega el caracter de la posici�n 0 del String
que la llama. Returns the char value at the specified index. An index ranges from 0
to length() - 1. The first char value of the sequence is at index 0, the next at
index 1, and so on, as for array indexing. If the char value specified by the index
is a surrogate, the surrogate value is returned.
* var1.substring(3,12); --> extrae los caracteres del string var1 que
van de 3 a 12. Recordar que la primera posici�n es 0.

- The significant performance difference between these two classes is that


StringBuffer is faster than String when performing simple concatenations

#######################
Video 7 (Condicionales)
#######################
-----------------------------------------------------------------------------------
-----------------
- Operador IF:

if (condicion1) {
// Sentencias
}
else if (condicion2) {
// Sentencias
}
else {
// Sentencias
}

Nota: Si la sentencia if s�lo ocupa una l�nea, entonces no es necesario colocar


los parentesis
-----------------------------------------------------------------------------------
-----------------
- Operador SWITCH:

switch (variable) {
Case 'A':
//Sentencias;
break;
Case 'B':
//Sentencias;
break;
default:
//Sentencias;
}

Nota: la secci�n "default:" siempre se ejecuta, no importa si se entr� o no en


uno de los case previos,
para evitar esto es que se coloca la sentencia break, la cual hace que se
salte el resto del switch
-----------------------------------------------------------------------------------
-----------------
- Operador ternario:

(condici�n) ? Sentencias_en_caso_true : Sentencias_en_caso_false

ej:
mensaje = (numero==357) ? "357" : "default";
-----------------------------------------------------------------------------------
-----------------

- Condicionales: ==, !=, >=, <=, <, >


-----------------------------------------------------------------------------------
-----------------

- Clase Calendar:
Ej:
import java.util.Calendar;
Calendar ahora = Calendar.getInstance(); //Asigna una nueva instancia
de la clase Calendar a la variable ahora (con la fecha actual)
int hora = ahora.get(Calendar.HOUR_OF_DAY); //Obtiene la hora actual

int minuto = ahora.get(Calendar.MINUTE); //Obtiene el minuto actual


int dia = ahora.get(Calendar.DAY_OF_MONTH); //Obtiene el d�a actual
de mes
int mes = ahora.get(Calendar.MONTH)+1; //Obtiene el mes actual y le
suma uno
int a�o = ahora.get(Calendar.YEAR); //Obtiene el a�o actual
ahora.roll(Calendar.MINUTE, true); //M�todo que incrementa la
fecha almacenada en ahora en un minuto. Si colocamos Calendar.HOUR lo har� en una
hora (viene del capitulo 8)

Nota: tambien existe la clase Date para el manejo de fechas, sin embargo, esta no
debe ser utilizada ya que es obsoleta

-----------------------------------------------------------------------------------
-----------------

###############
Video 8 (Loops)
###############
-----------------------------------------------------------------------------------
-----------------
- Operador WHILE:

while (condicion) {
}
-----------------------------------------------------------------------------------
-----------------

- Operador FOR:

* for (int x=1; x<=10; x++) {...


* for (i=0; j=0; i*j<100; i++; j+=2) {...
* for (char contador = 'A' ; contador <='Z'; contador++) {... -->
Observar el uso de los char (Capitulo 9)

* for (int contador = 0; contador< frase.length; contador++) { -->


Estas l�neas pueden ser cambiadas por el uso del enhanced for loop para iterar
sobre arrays, el cual es:
String actual = frase[contador]; for
(String actual : frase) {...
-----------------------------------------------------------------------------------
-----------------

- Operador DO WHILE:
do {
//Sentencias;
} while (condicion);
-----------------------------------------------------------------------------------
-----------------

- En los tres loops previos se pueden usar los siguientes comandos con la intenci�n
de alterar su
iteraci�n:
* break; --> hace que se salga del actual bucle, es decir, no espera a que
se cumpla la condici�n de salida estipulada
* continue; --> continua el loop en la siguiente iteraci�n, es decir, se
salta las sentencias restantes en la iteraci�n actual

-----------------------------------------------------------------------------------
-----------------

- Nombre Loop: enJava se puede colocar un nombre a cualquier loop, con esto, al
usar break por ejemplo, se puede indicar a cual loop saltar
Ej:
targetLoop: <-- Nombre Loop
while (target <= 100) {
for (int i = 0; i < target; i++) {
if (points > 50) {
//Sentencias;
break targetLoop;... //El comando break
salta el resto de las sentencias del for y del while, eindica que se continue con
la siguiente iteraci�n del while...
-----------------------------------------------------------------------------------
-----------------

- Clase Scanner:
Ej:
import java.util.Scanner;
Scanner miScanner = new Scanner(System.in); (System.in --> The
"standard" input stream. This stream is already open and ready to supply input
data. Typically this stream corresponds to keyboard input or another input source
specified by the host environment or user.)

- M�todos de Scanner:
* findWithinHorizon("\d\d",0) --> metodo de la clase
Scanner, entrega un String seg�n el patron indicado y la longitud del String
especificado (http://www.dummies.com/programming/java/how-does-the-
findwithinhorizon-java-method-work/)
* numeroEscrito = miScanner.nextInt(); --> Scans the next token
of the input as an int (Cuidado: puede generar un error si se entre una letra, dado
que generalmente la entrada se asigna a una variable tipo int)

Nota: clase que permite leer del teclado


-----------------------------------------------------------------------------------
-----------------

- Clase Random:
Ej:
import java.util.Random
int numAleatorio = new Random().nextInt(10) + 1; --> genero un n�mero
entre 1 y 10
----
import java.util.Random
Random numAleatorio2 = new Random();
int numAleatorio = numAleatorio2.nextInt(10)+1;
----
Random numero = Random(547363837);

Nota: clase que permite generar un n�mero aleatorio


-----------------------------------------------------------------------------------
-----------------

- Clase File:
Ej:
import java.io.File;
File archivo = new File("c:\\miArchivo.txt");
archivo.delete(); --> Deletes the file or directory
denoted by this abstract pathname. If this pathname denotes a directory, then the
directory must be empty in order to be deleted.
resultado = archivo.delete(); --> La variable
resultado recibir� true o false dependiendo del resultado del borrado

Nota: clase que permite tratar archivos


-----------------------------------------------------------------------------------
-----------------

- Clase GregorianCalendar:
Ej:
import java.util.GregorianCalendar;
GregorianCalendar now = new GregorianCalendar();
now.get(Calendar.MINUTE) -->

Nota: la clase GregorianCalendar es una clase concreta de la clase Calendar


-----------------------------------------------------------------------------------
-----------------

- import static java.lang.System.out; --> permite usar el


comando out dentro del programa, en vez de escribirlo en su totalidad, System.out
-----------------------------------------------------------------------------------
-----------------

char replica = miScanner.findWithinHorizon(".", 0).charAt(0);

findWithinHorizon("\d\d",0) --> metodo de la clase


Scanner, entrega un String.
charAt(0); --> metodo de la clase String,
entrega un char. Returns the char value at the specified index. An index ranges
from 0 to length() - 1. The first char value of the sequence is at index 0, the
next at index 1, and so on, as for array indexing. If the char value specified by
the index is a surrogate, the surrogate value is returned.

--> http://www.dummies.com/programming/java/how-does-the-findwithinhorizon-java-
method-work/
-----------------------------------------------------------------------------------
-----------------

################
Video 9 (Arrays)
################
- Declaraci�n:
* int[] numero; --> tambien se puede colocar: int
numero[], ambos son aceptados

- Inicializaci�n:
* boolean[] compra = new boolean[22]; --> se crea una nueva
instancia de array y se le asigna una dimensi�n de 22
* String[] numeros = {"one", "two", "three"}; --> se crea una nueva
instancia de array, se le asigna una dimensi�n de 3 y adicionalmente se define su
contenido
* char[] convertir = citaDiaria.toCharArray(); --> se crea una nueva
instancia de array, se le asigna una dimensi�n igual a la cantidad de caracteres
del string citaDiaria y adicionalmente se define su contenido (los caracteres
de...)
* boolean[][] compra = new boolean[22][22]; --> se crea una nueva
instancia de array con dos dimensiones, y se le asignan 22 elementos a cada
dimensi�n
* int[] numero; ... return numero; --> forma de retornar un
array desde el cuerpo de un m�todo (Capitulo14)

- M�todo
* numeros.length; --> entrega el n�mero de elementos del
array numeros (a diferencia del length() usado en Strings, este no lleva
parentesis)
* Arrays.sort(arr1); --> ordena de forma ascendente los
elementos del array arr1

- Notas:
* los array en java son un tipo especifico de clase
* Segun el tipo, los array son inicializados de la siguiente manera, int=0,
boolean=false, string y objetos=null

################################
Video 10 (Introducci�n a la POO)
################################
- Clases > Objetos > M�todos > Atributos > Declaraciones > Expresiones > Operadores
- En este cap�tulo se crea la primera clase apuntando a OOP
- Hay variables de instancia y variables de clase
- Hay m�todos de instancia y m�todos de clase
- Las variables de instancia se declaran como cualquier variable, como se ha hecho
hasta ahora
- Los m�todos de instancia se declaran como cualquier m�todo, como se ha hecho
hasta ahora.
- Cuando se usa static en un m�todo, estamos definiendo a este como un m�todo de
clase, y por lo tanto es compartido por todos los objetos que se encuentren dentro
de esa clase
- Los atributos y m�todos de clase son llamados de la siguiente manera:
* dante.temperatura = 670; --> Atributo
* dante.comprobarTemperatura(); --> M�todo

- Si la clase a usar dentro de una aplicaci�n no esta en la misma carpeta que esta,
se generar� un error. A menos que se haga referencia a la misma???
- Indice de clases --> http://docs.oracle.com/javase/8/docs/api/index.html?
java/lang/String.html

##########################################
Video 11 (Jerarqu�a de clases y herencias)
##########################################
- Herencias: habilitan a una clase para heredar todos los m�todos y atributos de
otra clase. Dan lugar a una estricta jerarquia.
- Una clase s�lo puede tener una super clase (herencia simple).
- Una clase puede tener m�s de una subclase
- La clase Object es la clase m�s general, se encuentra en la c�spide de las
clases.
- Al ejecutar un m�todo de una clase que pertenece a una jerarqu�a de clases, la
forma de buscar el mismo es de abajo hacia arriba, es decir,
primero se busca en la �ltima de las subclases, luego se pasa a la superclase y
as� sucesivamente. Esto permite sobreescribir m�todos en las subclases.
- Para sobreescribir un m�todo, este debe tener el mismo nombre, devolver el mismo
tipo de dato y poseer los mismos argumentos que el m�todo a sobreescribir.
- A continuaci�n vemos como se especifica la relaci�n de una clase con su
superclase:
* public class Punto3D extends Point {... --> la palabra extends indica
que Point es la superclase de Punto3D

- Veamos el ejemplo del m�todo constructor de la clase Punto3D (subclase de Punto):


* public class Punto3D extends Point {
public int z; --> define una variable en la
clase Punto3D
public Punto3D(int x, int y, int z) { --> m�todo constructor
de la clase
super(x, y); --> como las variables 'x' y
'y' pertenecen a la superclase Point, ent. se llama a su constructor para su
definici�n
this.z = z; --> por �ltimo se define el
contenido de la variable 'y'. Oservese el uso de la palabra 'this'. La misma es
usada como "referenciador/apuntador", es decir, es la manera de hacer menci�n al
objeto de la clase sobre el que se esta trabajando

- Veamos como se llaman m�todos de la superclase:


*public void translate(int x, int y, int z) {
this.z += z; --> las variables propias de
la clase se siguen trabajando mediante la palabra 'this'
super.translate(x, y) ; --> los m�todos de la
superclase se llaman mediante la palabra super, excepto el constructor, el cual es
llamado de la forma que se vio en el c�digo previo

- Interfaces: es una colecci�n de m�todos que pueden ser usados por una clase.
Estos m�todos s�lo son definidos no implementados
- Paquetes: son modos de agrupar clases e interfaces relacionadas. Para usar clases
de un paquete, debemos importar este a nuestra aplicaci�n.
- Al crear un objeto de clase, siempre se llama al m�todo constructor, el cual debe
tener el mismo nombre que la clase.

###############################
Video 12 (Trabajar con objetos)
###############################
- En Java se usan objetos para llevar a cabo todos los trabajos
- Las clases son plantillas para la creaci�n de objetos
- Objeto = Instancia
- La mayoria de los objetos se crean mediante la palabra clave 'new'
- Para que una clase pueda ser ejecutada directamente, la misma debe poseer un
m�todo "main", de lo contrario debe ser llamada desde un programa.
- Al ejecutar la palabra clave 'new' se realizan las siguientes acciones:
* Crea una nueva instancia (objeto) de la clase indicada
* Localiza espacio en la memoria para el nuevo objeto
* Llama a un m�todo especial definido en la clase, el m�todo constructor.
Esta encargado de inicializar la nueva instancia
- Pueden haber diferentes definiciones del m�todo constructor cada uno con
distintos argumentos
- Java administra autom�ticamente la destrucci�n de objetos, no es necesario que
nosotros intervengamos.
- La sintaxis de punto se utiliza para acceder a las variables y m�todos de una
instancia (min 00:23:00)
- La sintaxis de punto puede ser usada para anidar expresiones y asi poder acceder
a variables de instancia (min 00:25:23)
- A diferencia de las variables de instancia, las variables de clase son definidas
en la clase misma y para ello se utiliza la
palabra 'static' en su definici�n.
- Cuando creamos una nueva instancia, esta poseer� una copia de cada variable de
instancia y se podr�n cambiar sus valores sin que esto
afecte el resto de las instancias de la misma clase, sin embargo, para las
variables de clase s�lo existe una copia, la cual es almacenada
en la clase, de cambiarla, todos los objetos de esa instancia se ver�n afectados.
- Las variables de clase pueden ser cambiadas a trav�s de alguna de sus instancias
o a trav�s de la misma clase, en todos los casos mediante
la sintaxis de punto. Por claridad, se recomienda hacerlo siempre directamente
por la clase y nunca por una de sus instancias
- Los m�todos de una clase pueden ser llamados desde sus instancias mediante la
sintaxis de punto. Al llamarlos, se deben colocar los parentesis
obligatoriamente, lleven o no argumentos.
- System (System.out....) es una clase, la cual puede ser invocada pero no
instanciada, es una clase final, todos sus contenidos son privados.
-----------------------------------------------------------------------------------
-----------------

- Clase StringTokenizer:
Ej:
import java.util.StringTokenizer;
StringTokenizer st1, st2;
st1 = new StringTokenizer(cita); --> Partira el String 'cita'
en varios Strings. Para ello se usar�n los delimitadores por defecto que son:
espacio, tabulador(\t), retorno de carro (\r), nueva linea (\n) y feed (\f)
st2 = new StringTokenizer(cita, "@"); --> Partira el String
'cita' en varios Strings. Para ello se usar� como delimitador el caracter '@'

- M�todos de StringTokenizer:
* st1.nextToken() --> Entrega el siguiente token por
leer
* st1.hasMoreTokens() --> Entrega true o false
dependiendo de si quedan o no tokens por extraer

Nota: clase que permite dividir un string grande en un grupo de string m�s
peque�os, deacuerdo a un delimitador (llamados tokens)
-----------------------------------------------------------------------------------
-----------------

#################################################################
Video 13 (Casting. Conversi�n entre tipos de Variables y Objetos)
#################################################################
- Las referencias no crean o copian objetos. Una referencia es una direcci�n que
indica donde est�n almacenados los m�todos y variables de un objeto.
- El siguiente c�digo muestra como crear una referencia:
* Point pt1, pt2; --> primero declaramos los tipos de objeto
pt1 = new Point(100, 100); --> se crea un objeto tipo Point
pt2 = pt1; --> observece como se crea la referencia al
objeto pt1. Es decir, pt2 no es un objeto, es una referencia a la direcci�n de
memoria del objeto pt1

- Casting: convertir informaci�n entre distintos formatos. Con Casting no


modificamos el original, sino que creamos una nueva variable u objeto.
- Tipos de Casting: Conversi�n entre variables, Conv. entre objetos, Conv. de
objetos a variables y Conv. de variables a objetos.
- Para hacer Casting de una variable, simplemente la precedemos del nuevo formato
entre parentesis.
- El Casting puede ser impl�cito o explicito. En este �ltimo es que se debe colocar
entre parentesis el tipo de dato destino
- Cuando el tipo de dato destino es de menor capacidad que el de origen, se debe
usar la conv. expl�cita, de lo contrario se genera un error
- System.out.println( "Promedio: " + (float) sum / num.length); --> observece el
uso de (float), de no colocarlo, el resultado ser�a la parte entera de la divisi�n.
Esto debido a que tanto sum como num.length son enteros, al ponerle (float) nos
aseguramos de incluir los decimales (Ej de Capitulo15)

- La conv. de chart a int sirve para obtener el c�digo ascii del caracter
- Ejemplo de casting:
* float fuente=13.213;
int destino = (int) fuente;

- Se puede hacer casting entre objetos, sin embargo, para que esto sea posible, es
necesario que la fuente y el destino est�n relacionados por herencias, es decir,
una de las clases debe ser subclase de la otra.
- Al igual que ocurri� con las variables, tambien en los objetos puede haber uno
con m�s capacidad que otro. Es por ello que tambien existe la conversi�n impl�cita
y expl�cita.
- Ej, de conv, de objeto:
* Graphics comp = new Graphics();
Graphics2D comp2D = (Graphics2D) comp;

- En Java no se puede hacer casting de una variable primitiva a un objeto, y


viceversa.
- Cabe resaltar, que en Java existen clases para cada variable primitiva, las
cuales pueden ser usadas para realizar casting
- Clase Boolean - Clase Byte
- Clase Character - Clase Double
- Clase Float - Clase Integer
- Clase Long - Clase Short
Nota: obs�rvese que en todos los casos se empieza con letra may�scula, esto se
debe a que son clases.
ejemplo de clase:

-----------------------------------------------------------------------------------
-----------------
|- Clase Character:
| * The Character class wraps a value of the primitive type char in an object.
| * An object of type Character contains a single field whose type is char.
| * In addition, this class provides several methods for determining a
character's category (lowercase letter, digit, etc.) and for converting characters
from uppercase to lowercase and vice versa.
|
| Ej de uso:
| - char outChar = Character.toUpperCase((char)inChar); //Cap30
|
|- Constructor:
| - Character(char�value)
|
|- M�todos de Character:
| * public static�char�toUpperCase(char�ch) //
| * public static�char�toLowerCase(char�ch) //
| * public static�boolean�isLetter(char�ch)
| * public static�boolean�isLetterOrDigit(char�ch)
| * public static�boolean�isLetterOrDigit(char�ch)
| * public static boolean isLowerCase(char�ch)
| * public static boolean isUpperCase(char�ch)
| * public String toString()
| * public static String toString(char�c)
| * public static chartoUpperCase(char�ch)
|
| Notas: -Librer�a: import java.lang.Character;
| -Hereda de Object

-----------------------------------------------------------------------------------
-----------------

- Desde Java 5 se permite la conv. autom�tica entre tipos primitivos y objetos (y


viceversa).
- Autoboxing: es cuando pasamos de un tipo primitivo a su objeto equivalente:
Ej: Integer I2 = 5;

- Unboxing: es cuando pasamos de un objeto a su tipo primitivo equivalente.


Ej: Float total = new Float(1.3); float sum = total/5;
-----------------------------------------------------------------------------------
-----------------

- Clase Integer:
Ej:
import java.lang.Integer; --> realmente esta l�nea no
se requiere (es la libreria nativa de java)
Integer cantidad = new Integer(1234); --> esta clase siempre
espera como argumento un n�mero o un string, de lo contrario se genera un error

- M�todos de Integer:
* int nuevaCantidad = cantidad.intValue(); --> el m�todo intValue()
entregar� el entero del objeto cantidad (perteneciente a la clase Integer)
* numero = Integer.parseInt("0" + field.getText()); --> m�todo utilizado
para convertir strings en n�meros. Parses the string argument as a signed decimal
integer. The characters in the string must all be decimal digits, except that the
first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative
value or an ASCII plus sign '+' ('\u002B') to indicate a positive value. The
resulting integer value is returned, exactly as if the argument and the radix 10
were given as arguments to the parseInt(java.lang.String, int) method

Nota: - clase utilizada para trabajar con datos primitivos del tipo entero
-----------------------------------------------------------------------------------
-----------------

- Clase BufferedReader:
* Ver capitulo30

Ej de uso:
public static void main(String args[]) throws IOException{
BufferedReader buff = new BufferedReader(new
InputStreamReader(System.in));
String str = buff.readLine(); --> se entrega a str lo
tecleado por el usuario

- M�todos de BufferedReader:
* String str = buff.readLine(); --> Reads a line of
text. A line is considered to be terminated by any one of a line feed ('\n'), a
carriage return ('\r'), or a carriage return followed immediately by a linefeed.
Return a String containing the contents of the line, not including any line-
termination characters, or null if the end of the stream has been reached

Nota: - clase utilizada para leer un buffer del teclado


-----------------------------------------------------------------------------------
-----------------

###############################################
Video 14 (Alcance de variables y uso de 'this')
###############################################
- Hay tres tipos de variables:
- Locales: definidas dentro de un m�todo (el main puede ser uno de ellos).
Al salir del m�todo deja de existir.
- De instancia: definidas dentro de una clase (no pueden estar en ning�n
m�todo, incluido el main)
- De clase: definidas dentro de una clase con la palabra clave 'static'
(no pueden estar en ning�n m�todo, incluido el main)

- Los m�todos definen el comportamiento que tendr�n los objetos


- Partes del m�todo: tipo devuelto, nombre, par�metros y cuerpo
- Pueden haber varios m�todos con el mismo nombre, sin embargo su firma debe variar
(n�mero de argumentos, tipo de variables de estos). Esto es llamado OVERLOADING (no
tiene en cuenta el tipo de retorno)
- En algun punto del cuerpo del m�todo, se debe devolver el tipo de dato indicado,
esto se hace mediante la palabra clave 'return' (a menos que el tipo de vuelto sea
'void', en ese caso no es necesario el uso de return)
- La palabra clave 'this' s�lo se usa en m�todos de instancia y se refiere al
objeto al que pertenece el m�todo. El uso de 'this' normalmente es expl�cito por lo
cual no se requiere su uso, sin embargo, de existir conflictos con nombres de
variables iguales, por ejemplo, basta con usar 'this' para referirse a la variable
de instancia
Ej: - t=this.x;
- this.verFecha(this)
- return this;

#############################################
Video 15 (Argumentos y Sobrecarga de m�todos)
#############################################
- Los m�todos pueden recibir objetos como par�metros. En ese caso se dice que el
objeto es pasado al m�todo como par�metro por referencia. Cabe recordar, que
de ocurrir un cambio en el objeto dentro del m�todo, este permanecer� con dicho
cambio una vez salga del m�todo.
- rect.construirCaja(new Point(10, 10), new Point(20, 20));--> Observese la forma
en que se pasan dos objetos de la clase Point al m�todo construirCaja.

- Lo anterior tambien aplica a los arrays, recordar que estos son objetos
(aparentemente no aplica a los Strings).
- Los tipos primitivos se pasan por valor
- Las aplicaciones son clases de java que se pueden ejecutar a ellas mismas
- Una aplicaci�n Java necesita una clase de inicio que tenga un m�todo main(). El
m�todo main es un m�todo de clase
- Firma del m�todo main:
public static void main(String[] arguments) {...

Nota: siempre debe ser p�blico, static, void?

- Los argumentos deben estar separados por espacios


- Para incluir argumentos que incluyen espacios se usan las comillas
Ej: C:\java Convertidor Jesus Conde N��ez "numero 25"
- arguments[0]: "Jesus"
- arguments[1]: "Conde"
- arguments[2]: "N��ez"
- arguments[3]: "numero 25"

Nota: las comillas en argumentos de l�neas de comandos no significan String.


Los argumentos que se pasan siempre son un array de Strings, aunque sean n�meros.

########################################################
Video 16 (M�todo Constructor y sobrescritura de m�todos)
########################################################
- Los m�todos Constructor son llamados autom�ticamente cuando se crea el objeto
(mediante la palabra clave 'new'). Es la �nica vez que se llama el m�todo
- Una clase puede tener m�s de un m�todo Constructor y Java permite que se
comuniquen
- El m�todo Constructor no puede ser llamado
- Que hace Java cuando la palabra clave 'new' crea un nuevo objeto?
* Localiza memoria para el objeto
* Inicializa las variables instancia del objeto (con los valores
correspondientes o con los default en su defecto)
* Llama al m�todo Constructor de la clase

- Los m�todos Constructor no son obligatorios.


- Los m�todos Constructor deben tener el mismo nombre de la clase, sin tipo retorno
por ende no deben poseer la palabra clave 'return' en su cuerpo
- Los m�todos Constructor pueden comunicarse y compartir informaci�n entre si. De
ese modo se pueden duplicar algunos de los comportamientos de uno en otro.
- Un m�todo Constructor puede llamar a otro, la forma de hacerlo es mediante:
* this(arg1, arg2, ..., argn) --> llamar� al Constructor que cumpla con la
firma indicada en el this (n�mero argumentos, tipo de argumentos)

- En alg�n momento determinado puede que queramos que una clase use su propio
m�todo y no el de su superclase. Para ello definimos un m�todo en una subclase
con la misma firma que el m�todo de su superclase (sobreescribir m�todos)
- Recordar que los m�todos se buscan de abajo hacia arriba, es decir, se comienza
por la subclase, luego la superclase, luego la superclase de la superclase y as�
sigue subiendo
- this.getClass().getName()); --> entrega el nombre de la clase que llama al m�todo
del objeto actual
- Uso de la palabra clave 'super.': permite invocar un m�todo de la superclase
desde el m�todo "sobreescrito" de la subclase. Esto permite reusar c�digo
Ej:
Superclase
==========
void hacerMetodo(String a, String b) {
//Cuerpo
}
Subclase
========
void hacerMetodo(String a, String b) {
super.hacerMetodo(a, b) --> llama al m�todo hacerMetodo()
de la superclase y luego contin�a con el resto del cuerpo
//continuaci�n del cuerpo
}

- Super es un contenedor al igual que this, el primero contiene la Superclase y el


segundo, el objeto en cuesti�n
- Para llamar el constructor de una Superclase se usa la siguiente sintaxis:
* super(argumentos); --> se coloca la palabra clave 'super' sin el nombre
del constructor y se agregan los argumentos que este debe tener
- En Java es obligatorio que super() sea la primera declaraci�n en una definici�n
de Constructor (en caso de que vaya a ser usado)

#######################################################################
Video 17 (Modificadores y Controles de Acceso para M�todos y Variables)
#######################################################################
- Los modificadores son palabras clave que a�adimos a las definiciones y marcaran
el modo en que ......?????
- Los modificadores siempre deben preceder al elemento que modifican
- Tipos de modificadores
* Acceso: controla acceso a variables, m�todos y clases
-private, protected, public, default
* Crear: usado para crear m�todos y variables de clases
-static
* Fijar: hace inmodificables variables, m�todos y clases
-final
* Abstractos: crear clases y m�todos abstractos
-abstract
* Threads: usados para hilos de ejecuci�n
-sybchronized, volatile

- Encapsulaci�n: proceso que hace que variables y m�todos sean s�lo visiblles
dentro de la clase
- Si no se usa ningun modificador de acceso en las variables y m�todos, estos
pueden ser accedidos por cualquier otra clase que se encuentre dentro del
mismo paquete
- Cabe resaltar que hacemos a nuestras clases miembros de un paquete mediante la
palabra clave 'package'
- Modificadores de Acceso
*private:
-Evita completamente que un m�todo o variable sea usado por otra
clase.
-Adicionalmente, estos no ser�n heredados por las subclases.
-Las variables privadas pueden ser tratadas con m�todos p�blicos
de la misma clase

*protected:
-Limita el acceso a subclases de una clase (aunque no est�n en el
mismo paquete) y otras clases en el mismo paquete.

*public:
-Cualquier variables y/o m�todo definido de esta manera, podr�
ser accedido por cualquier otra clase dentro o fuera del paquete.
*default:
-Cualquier variables y/o m�todo definido de esta manera, podr�
ser accedido por cualquier otra clase que este dentro del paquete (fuera del
paquete s�lo subclases)

*abstract (Cap�tulo 18):


-Se utiliza para crear un m�todo o clase abstracta
-Una clase abstracta es aquella que funciona como contenedor, un
lugar donde contener comportamientos y atributos comunes compartidos por sus
subclases
-Estas clases tendr�n subclases, pero ellas en si no pueden ser
instanciadas (no se pueden crear objetos a partir de ella)
-Pueden contener m�todos Constructor o abstractos
-Si una clase s�lo posee m�todos abstractos, quiz�s convenga m�s
hacer uso de una Interface (se ver� m�s adelante)
-Un m�todo abstracto s�lo puede existir en una clase abstracta.
El mismo s�lo contendr� la firma de este (ni siquiera se colocan las llaves)
-Los m�todos abstractos no tienen cuerpo, este debe ser
desarrollado en las subclases. De no hacerlo alguna subclase, la misma tendr� que
ser
declarada tambien como abstracta.
-Ej:
public abstract class A { // explicitly declared
abstract
int num;
int getNum() {
return num;
}
abstract void printMessage(); // declared but
not implemented
}

- Cuadro descriptivo
VISIBILIDAD public protected
default private
-----------------------------------------------------------------
--------------------------
Desde la misma clase SI SI SI
SI
-----------------------------------------------------------------
--------------------------
Desde cualquier clase del mismo paquete SI SI
SI NO
-----------------------------------------------------------------
--------------------------
Desde cualquier clase fuera del paquete SI NO
NO NO
-----------------------------------------------------------------
--------------------------
Desde una subclase del mismo paquete SI SI
SI NO
-----------------------------------------------------------------
--------------------------
Desde una subclase fuera del paquete SI SI
NO NO
-----------------------------------------------------------------
--------------------------

- Control de acceso y herencia - Reglas


*Los m�todos declarados public en una superclase deben ser tambi�n public en
todas las subclases
*Los m�todos declarados protected en una superclase, deben bien ser public o
protected en sus subclases. No pueden ser private
*Los m�todos declarados sin control de acceso (default) no pueden ser
declarados como private (protected si??)
*Un m�todo sobreescrito no puede ser m�s restrictivo que el original, s� m�s
p�blico

- Control de acceso - M�todos Accesor


*Se usan para dar acceso a variables privadas.
*Deben ser p�blicos y estar dentro de la clase que contiene a la variable
privada
*Se suelen utilizar las prepocisiones 'set' y 'get' en los nombres del m�todo
accesor para identificar la finalidad del m�todo

- En las variables y m�todos de clase, se sugiere sean invocados a traves del


nombre de la clase y no del objeto creado, s�lo con propositos de legibilidad del
c�digo

################################
Video 18 (Trabajar con Paquetes)
################################
- Modificador 'final' para clases, variables y m�todos
*De una clase 'final', no se pueden crear subclases
*Una clase 'final' hace que la aplicaci�n se ejecute m�s r�pido
*Una clase 'private' es tambien 'final' aunque no la declaremos de esta
manera
*Un m�todo 'final' no puede ser sobreescrito en una subclase
*Un m�todo 'final' hace que la aplicaci�n se ejecute m�s r�pido
*Un m�todo 'private' es tambien 'final' aunque no lo declaremos de esta
manera
*Una variable 'final' no puede cambiar su valor (es como una constante)
*En variables el uso de 'final' suele acompa�arse de la palabra 'static'

- Uso de paquetes:
*Se llaman mediante la palabra clave 'import' o colocando el nombre completo
del paquete junto con la clase a usar dentro del programa
*No se colocan may�sculas en su nombre
*Se puede importar una �nica clase o un paquete completo
*Sirven para organizar grandes grupos de clases
*Pueden contener un n�mero ilimitado de clases
*Mediante la palabra clave 'package' m�s el nombre del paquete, hacemos que
una clase pertenezca a un paquete espec�fico
*Dicha declaraci�n debe estar siempre al principio del c�digo

- package com.illasaron.libreria; --> esto indica que el paquete esta en la carpeta


'com', que tiene un subdirectorio 'illasaron', que a su vez
tiene otra carpeta 'libreria' (todo esto dentro de la
carpeta proyectos de NetBeans)

- CLASSPATH
*Se utiliza para indicarle a Java la ubicaci�n de los paquetes y clases
*Es algo tedioso ya que depende del sistema operativo
*Al usar NetBeans, como este tiene su propio sistema no importa el contenido
de la variable de entorno CLASSPATH o si existe, igual seran ubicados los paquetes

- Uso de la palabra clave 'import'


*Permite incluir paquetes o clases espec�ficas en el c�digo
*No existe diferencia en cuanto a tama�o o rapidez de ejecuci�n si decidimos
usar 'import' con el paquete o la clase a usar
*Debe ir al principio del c�digo, luego de 'package'
*Con asterisco '*' nos referimos a todas las clases de un paquete
*No se permite importar grupos de paquetes con asterisco '*'
*El uso de la palabra 'static' entre 'import' y el nombre de la clase permite
usar las constantes de esta en el c�digo en su forma corta, es decir,
en vez de usar, por ejemplo, Math.PI se usa PI

- Si se importan dos paquetes que poseen dos clases distintas pero que comparten el
mismo nombre, entonces se debe colocar el 'paquete + nombre' dentro del c�digo,
(ej.: java.util.Date now = new java.util.Date();), de lo contrario se generar� un
error

########################################
Video 19 (Ampliar clases con interfaces)
########################################
- Las Interfaces en Java dan una soluci�n a los problemas que plantea a Java no
contar con herencias m�ltiples
- Las Interfaces tienen similitudes con los m�todos y clases abstractas
- Una Interface Java es una colecci�n de comportamientos abstractos que pueden ser
adoptados por cualquier clase sin ser heredados de una superclase
- Una clase puede contener m�s de una Interface (se separan por comas al momento de
su definici�n)
- Una Interfaz s�lo puede tener definiciones de m�todos abstractos y constantes
- No pueden ser instanciadas
- Pata usar una Interface se debe a�adir la palabra clave 'implements'
* EJ: public class SignoAnimado extends javax.swing.JApplet Implements
Runnable, Observable {...
--> Superclase: javax.swing.JApplet
--> Interface: Runnable y Observable

- Cualquier subclase que implemente una Interface, debe desarrollar todos los
m�todos abstractos de la Interface, sin excepci�n!
- Variable tipo Interface??? (min 15:23)
- Para crear una Interface se hace uso de la palabra clave 'Interface'
* Ej: public Interface Runnable {...

- Los m�todos de las Interface's deben ser public y abstract, de no declararlos as�
expl�citamente, java los asumir� de manera impl�cita
- Las variables de las Interface's deben ser public, static y final, de no
declararlas as� expl�citamente, java las asumir� de manera impl�cita
- Si las Interfaces no llevan la palabra clave 'public' en su declaraci�n, entonces
los m�todos no declarados expl�citamente como public, no se convertiran
de manera implicita a public y abstract, como se explico en los dos puntos
previos
- Las Interfaces pueden importar otras Interfaces, incluso pueden importar clases
de otros paquetes
- Las Interfaces pueden pertenecer a un paquete
- Una Interface puede heredar de otra Interfaces, para ello usamos la palabra clave
'extends' igual que ocurre con las clases

- detalle = Double.parseDouble(detalleIn); --> transforma String a


double
- precio = Math.floor(precio*100+.5) / 100; --> reduce precio a dos
decimales
- cantidad = Integer.parseInt(cantIn); --> transforma String a int
- float total = Float.parseFloat(valor1.getText()) --> transforma String a float
(Capitulo24)
Ejemplo de aplicaci�n (Capitulo24):
public void focusGained(FocusEvent event) {
try {
//Convertimos valores campos de String a n�meros y los
sumamos
float total = Float.parseFloat(valor1.getText()) +
Float.parseFloat(valor2.getText());
//A�adimos el resultado al campo suma
suma.setText("" + total);
} catch (NumberFormatException nfe) {
//A�adimos excepci�n si valores texto no pueden convertirse
a n�mero
valor1.setText("0");
valor2.setText("0");
suma.setText("0");
}
-----------------------------------------------------------------------------------
-----------------

- Interface Comparable<T>:
This interface imposes a total ordering on the objects of each class that
implements it. This ordering is referred to as the class's natural ordering,
and the class's compareTo method is referred to as its natural comparison method.
Lists (and arrays) of objects that implement this interface can be sorted
automatically by Collections.sort (and Arrays.sort). Objects that implement
this interface can be used as keys in a sorted map or as elements in a sorted
set, without the need to specify a comparator.

Ej. de implementaci�n del m�todo abstracto compareTo, perteneciente a la


Interface Comparable:
import java.lang.*; --> realmente esta l�nea no se
requiere (es la libreria nativa de java)

public int compareTo(Object obj) {


Articulos temp = (Articulos) obj ;
if (this.precio < temp.precio)
return 1;
else if (this.precio > temp.precio)
return -1 ;
return 0;
}

- M�todo de Comparable:
* int compareTo(Object obj) --> Compares this object with the
specified object for order. Returns a negative integer, zero, or a positive integer
as this object is less than, equal to, or greater than the specified object.

Nota: - interface utilizada para establecer un orden en los objetos de la clase


que la implemente
- Formas de implementar la interface Comparable:
1) public class Articulos implements Comparable <Articulos> {... -->
Colocando el tipo de objeto/par�metro luego de Comparable (entre <>)
public int compareTo(Articulos obj) {... --> en
este caso la sintaxis del m�todo usa el tipo de objeto/par�metro como tipo de
argumento a recibir
...Articulos temp = obj ; --> no es
necesario hacer casting del objeto recibido, ya que el argumento recibido es de la
clase esperada

2) public class Articulos implements Comparable {... -->


Sin colocar el tipo de objeto/par�metro luego de Comparable
public int compareTo(Object obj) {... --> en este
caso la sintaxis debe indicar el tipo de parametro que recibir�, y
...Articulos temp = (Articulos) obj; --> se
debe hacer casting al argumento recibido
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------

- Clase Collections:
Ej de uso:
import java.util.Collections;

- M�todo de Collections:
* Collections.sort(List<T> list); --> Sorts the specified list
into ascending order, according to the natural ordering of its elements. All
elements in the list must implement the Comparable interface.
Ej: Collections.sort(catalogo);

Nota: - clase utilizada para ...


-----------------------------------------------------------------------------------
-----------------

- Clase LinkedList<E>:
* Implementaci�n de la interface List
* Implementa una serie de m�todos que permiten crear una lista, a�adir y borrar
elementos de una lista
* Estos m�todos permiten que una lista enlazada sea usada como una pila/queue
(LIFO), cola/stack (FIFO) o cola de doble final

Ej de uso:
import java.util.LinkedList;
private LinkedList catalogo = new LinkedList();

- M�todos de LinkedList:
* catalogo.add(E element) --> Appends the specified
element to the end of this list (boolean)
* catalogo.get(int index) --> Returns the element at
the specified position in this list (<E>) [probablemente hay que hacer <casting> al
elemento recibido]
* catalogo.getFirst() --> Returns the first element
in this list (<E>) [probablemente hay que hacer <casting> al elemento recibido]
* catalogo.getLast() --> Returns the last element
in this list (<E>) [probablemente hay que hacer <casting> al elemento recibido]
* catalogo.size() --> Returns the number of elements
in this list (int)

Nota: - clase utilizada para crear una lista, a�adir y borrar elementos
-----------------------------------------------------------------------------------
-----------------

#####################################
Video 20 (Swing. Crear GUIs con Java)
#####################################
- En una interfaz gr�fica hay:
*Componentes: vienen a ser los elementos individuales de una GUI, ejemplo,
botones, checks, etc
*Contenedores: son los encargados de contener los componentes, ejemplo,
ventanas(JWindow), marcos(JFrame), etc

-----------------------------------------------------------------------------------
-----------------
- Clase JWindow:
* I...???

Ej de uso:
xxxxx

- M�todo de LinkedList:
* xxxxxxx --> xxxxxxxxxxxxxxxxxxxxxxxxx

Notas: - no poseen barra de titulo

-----------------------------------------------------------------------------------
-----------------
- Clase JFrame:
* I.......

Ej de uso:
-----------------------------------------------------------------------------
----------------------------------------------------------------
//Implementa un JFrame creando una subclase de este
import javax.swing.*;
public class MarcoReloj extends JFrame { //Se crea una clase que
extiende a la clase JFrame
public MarcoReloj() { //Se requiere un
constructor para la creaci�n del marco
super("Titulo"); //Se llama al constructo de
la superclase. Sin argumentos, no se define un titulo al marco al momento de su
creaci�n. Si se pasa un argumento entre comillas dobles, se define el titulo de
dicho marco
setLayout(new GridLayout(4, 1));
add(pp)
...
pack();
setVisible(true);
...
---------------------------------------------------------
//Implementa un JFrame dentro de una clase
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = frame.getContentPane();
c.setLayout(new GridLayout(4, 1));
c.add(ppbutton);
...
frame.pack();
frame.setVisible(true);
...

- M�todos de JFrame:
* setTitle("Titulo"); // Define el titulo de un
marco/JFrame
* public�void�setFocusable(boolean�focusable) // Sets the focusable
state of this Component to the specified value. This value overrides the
Component's default focusability.
* setSize(PixelesAncho, PixelesAlto) // Define el tama�o del
marco
* pack(); o Objeto.pack(); // Causes this Window to be
sized to fit the preferred size and layouts of its subcomponents. The resulting
width and height of the window are automatically enlarged if either of dimensions
is less than the minimum size as specified by the previous call to the
setMinimumSize method. If the window and/or its owner are not displayable yet, both
of them are made displayable before calculating the preferred size. The Window is
validated after its size is being calculated.
* setVisible(true) // Permite mostrar/ocultar el
marco/JFrame
* setDefaultCloseOperation(EXIT_ON_CLOSE) // Define la funci�n que
cumplir� el bot�n de cierre del marco
* setLayout(LayoutManager�manager); // Define la disposici�n de
los objetos en el marco segun el LayoutManager indicado
* add(Objeto); // A�ade un componente al
JFrame
-Posibles valores:
> DO_NOTHING_ON_CLOSE (defined in WindowConstants): Don't do
anything; require the program to handle the operation in the windowClosing method
of a registered WindowListener object.
> HIDE_ON_CLOSE (defined in WindowConstants):
Automatically hide the frame after invoking any registered WindowListener
objects (This is the default value)
> DISPOSE_ON_CLOSE (defined in WindowConstants):
Automatically hide and dispose the frame after invoking any registered
WindowListener objects.
> EXIT_ON_CLOSE (defined in JFrame): Exit the
application using the System exit method. Use this only in applications.

Notas:
-Librer�a: import javax.swing.JFrame;
-Posee barra de titulo, botones de cierre, maximizar, etc

-----------------------------------------------------------------------------------
-----------------
- Clase JButton (java.awt.Button:???)
* I...

Ej de uso:
JButton play = new JButton("Play"); //Se crea el bot�n
add(play); //y luego se agrega al contenedor

- Constructores:
-JButton play = new JButton(String texto); //Se
crea el bot�n y se le pasa un String como argumento
-JButton play = new JButton(ImageIcon imagen); //Se
crea el bot�n y se le pasa un ImageIcon como argumento
-JButton play = new JButton("Actualizar", !imagenes/IconoActualizar.gif");
//Se crea el bot�n y se le pasan como argumento un String y un ImageIcon

- M�todo de JButton:
* setEnabled(true); //se utiliza
para habilitar/deshabilitir el bot�n
* public void setActionCommand(String command) //Sets
the command name for the action event fired by this button. By default this action
command is set to match the label of the button (Cap 24)
* public String getActionCommand() //Returns
the command name of the action event fired by this button. If the command name is
null (default) then this method returns the label of the button (Cap 24)
* public�void�addActionListener(ActionListener�l) //Adds
the specified action listener to receive action events from this button. Action
events occur when a user presses or releases the mouse over this button. If l is
null, no exception is thrown and no action is performed (Cap 24)
* public�void�setLabel(String�label) //Sets
the button's label to be the specified string (Cap 24)
* public�String�getLabel() //Gets the
label of this button
* public�void�setBounds(Rectangle�r)
//Moves and resizes this component to conform to the new bounding rectangle
r. This component's new position is specified by r.x and r.y, and its new size is
specified by r.width and r.height
* public�void�setBounds(int�x, int�y, int�width, int�height)

Notas: -Librer�a: import javax.swing.JButton;

-----------------------------------------------------------------------------------
-----------------
- Clase JLabel:
* Muestra informaci�n que no puede ser modificada por el usuario
* La informaci�n puede ser texto, gr�ficos o ambos

Ej de uso:
JLabel etiquetaPagina = new JLabel("Direcci�n p�gina web: ", JLabel.RIGHT);
//Se crea la etiqueta
add(etiquetaPagina); //y
luego se agrega al contenedor

- Constructores:
-JLabel etiqueta = new JLabel("Direcci�n p�gina web:");
-JLabel etiqueta = new JLabel("Direcci�n p�gina web: ", JLabel.RIGHT);
-JLabel play = new JLabel(ImageIcon imagen);
//Se crea la etiqueta y se le pasa un ImageIcon como argumento

- M�todos de JLabel:
* Objeto.getText(); // Obtiene el texto de la etiqueta
* Objeto.setText(); // Define el texto de la etiqueta o
null para limpiar el contenido
* Objeto.revalidate(); // ???
* public�void�repaint() // Repaints this component.
If this component is a lightweight component, this method causes a call to this
component's paint method as soon as possible. Otherwise, this method causes a call
to this component's update method as soon as possible.
* public�void�setVisible(boolean�b) // Shows or hides this component
depending on the value of parameter b. This method changes layout-related
information, and therefore, invalidates the component hierarchy.
* public�boolean�isShowing() // Determines whether this
component is showing on screen. This means that the component must be visible, and
it must be in a container that is visible and showing.
* public�void�revalidate() //

Notas:
-Librer�a: import javax.swing.JLabel;
-El constructor puede recibir varios argumentos, entre ellos: texto de la
etiqueta, alineaci�n

-----------------------------------------------------------------------------------
-----------------
- Clase JTextField:
* Area en la que el usuario puede introducir una �nica l�nea de texto

Ej de uso:
xxxxx

- M�todo de JTextField:
* getText(); --> retorna el texto dentro del
JTextField

Notas:
-Librer�a: import javax.swing.JTextField;
-El constructor puede recibir varios argumentos, entre ellos: texto del
TextField, tama�o del TextField,

-----------------------------------------------------------------------------------
-----------------
- Clase JCheckBox:
* Se puede presentar s�lo o como parte de un grupo

Ej de uso:
xxxxx

- M�todo de JCheckBox:
* xxxx; --> xxxxxxx

Notas:
-Librer�a: import javax.swing.JCheckBox;
-El constructor puede recibir varios argumentos, entre ellos: texto del
JCheckBox, valor del JCheckBox,
-Para agrupar varios JCheckBox enun grupo se debe utilizar la clase
ButtonGroup
Ej:
JCheckBox cursoJava = new JCheckBox("Curso de Java", true);
JCheckBox cursoFlash = new JCheckBox("Curso de Flash", true);
JCheckBox cursoPHP = new JCheckBox("Curso de PHP", false);
JCheckBox cursoRuby = new JCheckBox("Curso de Ruby", false);
FlowLayout dis = new FlowLayout();
ButtonGroup cursos = new ButtonGroup();
cursos.add(cursoJava);
cursos.add(cursoFlash);
cursos.add(cursoPHP);
cursos.add(cursoRuby);
setLayout(dis);
add(cursoJava);
add(cursoFlash);
add(cursoPHP);

-----------------------------------------------------------------------------------
-----------------
- Clase JComboBox:
* Lista pop-up seleccionable

Ej de uso:
xxxxx

- M�todos de JComboBox:
* Objeto.setEditable(true); --> Hace editable el
JComboBox
* Objeto.addItem("ItemList"); --> Agrega items a la lista
desplegable
* Objeto.setSelectedIndex(2); --> Muestra el tercer item de
la lista en el combo-box

Notas:
-Librer�a: import javax.swing.JComboBox;

-----------------------------------------------------------------------------------
-----------------
- Clase JTextArea:
* Area en la que el usuario puede introducir varias l�neas de texto

Ej de uso:
JTextArea comentarios = new JTextArea(8, 40); --> Define el JTextArea
con 8 l�neas de alto y 40 caracteres de ancho (mediante llamado al constructor)
add(comentarios);

- M�todos de JTextArea:
* public�void�append(String�str) //Appends the given text to the end
of the document. Does nothing if the model is null or the string is null or empty.
* public�void�setCaretPosition(int�position) //Sets the position of the
text insertion caret for the TextComponent. Note that the caret tracks change, so
this may move if the underlying text of the component is changed. If the document
is null, does nothing. The position must be between 0 and the length of the
component's text or else an exception is thrown.
* public�Document�getDocument() //Fetches the model associated with
the editor. This is primarily for the UI to get at the minimal amount of state
required to be a text editor. Subclasses will return the actual type of the model
which will typically be something that extends Document.
* public�void�revalidate()
* yourJTextArea.setLineWrap(true); //Cap26
* yourJTextArea.setWrapStyleWord(true); //(Web)

Notas:
-Librer�a: import javax.swing.JTextArea;
- Objeto_JTextArea.getDocument().getLength() --> entrega la posici�n del
�ltimo caracter

-----------------------------------------------------------------------------------
-----------------
- Clase FlowLayout:
* Deja fluir los componentes de izq a der en el orden en que fueron a�adidos al
contenedor, cuando no hay m�s espacio, una nueva fila de componentes es a�adida.

Ej de uso:
- FlowLayout flo = new FlowLayout(); setLayout(flo);
- setLayout(new FlowLayout());

- Constructores:
-FlowLayout()
-FlowLayout(Alineacion)
-FlowLayout(Alineacion, int SeparacionEntreComponentes, int
SeparacionEntreLineas)

donde:
-Alineaci�n: FlowLayout.LEFT / FlowLayout.RIGHT / FlowLayout.CENTER /
FlowLayout.LEADING / FlowLayout.TRAILING
-SeparacionEntreComponentes: n�mero entero que representa la cantidad
de pixeles de separaci�n entre dos componentes de la misma l�nea
-SeparacionEntreLineas: n�mero entero que representa la cantidad de
pixeles de separaci�n entre dos l�neas de componentes

- M�todo de FlowLayout:
* xxxxxxx --> xxxxxxxxxxxxxxxxxxxxxxxxx

Notas: -Librer�a: import javax.swing.FlowLayout;

-----------------------------------------------------------------------------------
-----------------
- Clase JPanel:
* Subdivide el �era de una interfaz en secciones

Ej de uso:
public class PanelReloj extends JPanel { //Creamos una clase que extiende a
la clase JPanel
public PanelReloj() { //Definimos el constructor de la
misma
super(); //En este ejemplo se llama al constructor
de la super clase y no se le pasan argumentos
//resto del cuerpo //En el resto del cuerpo se deben
a�adir los componentes que estar�n dentro del JPanel

- M�todo de JPanel:
* add(Objeto); //A�ade un componente al JPanel

* public�void�setSize(int�width, int�height) //Resizes this component so


that it has width and height in Pixels. This method changes layout-related
information, and therefore, invalidates the component hierarchy.
* public�void�repaint() //Repaints this component. If this
component is a lightweight component, this method causes a call to this component's
paint method as soon as possible. Otherwise, this method causes a call to this
component's update method as soon as possible.
* public�void�paintComponents(Graphics�g) //Paints each of the components in
this container.
Ejemplo:
public void paintComponent(Graphics comp) {
super.paintComponent(comp);
aceptar.setBounds(botonX, botonY, 90, 20);
}

Notas:
-Librer�a: import javax.swing.JPanel;
-...

-----------------------------------------------------------------------------------
-----------------

###########################################
Video 21 (Look and Feel y Cajas de di�logo)
###########################################
- Clase UIManager:
* Manages the current look and feel, the set of available look and feels

Ej de uso: Este c�digo debe ser colocado al inicio de la clase que implementa
nuestra GUI
try {
UIManager. setLookAndFeel(
//Se define el LookAndFeel a utilizar
//UIManager.getSystemLookAndFeelClassName());
//--> se usa el del sistema (obteniendolo mediante
getSystemLookAndFeelClassName)
//UIManager.getCrossPlatformLookAndFeelClassName());
//--> se usa el CrossPlatformLookAndFeel
//"com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
//--> se usa el WindowsClassicLookAndFeel
// "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
//--> se usa el WindowsLookAndFeel
"com.sun.java.swing.plaf.motif.MotifLookAndFeel");
//--> se usa el MotifLookAndFeel
//"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
//--> se usa el NimbusLookAndFeel
SwingUtilities.updateComponentTreeUI(this) ;
//Se ordena actualizar el LookAndFeel (debe estar en el constructor?)
} catch (Exception e) {
System. out. println("No se ha podido configurar el look and feel:"+
e.getMessage( )); //Esta parte del c�digo s�lo se ejecuta
e.printStackTrace();
//en caso de fallar el intento de cambio del LookAndFeel (porci�n de c�digo
previo)
}

- M�todos de UIManager:
* UIManager.setLookAndFeel(LookAndFeel�newLookAndFeel);
//Sets the current look and feel to newLookAndFeel.
* UIManager.getSystemLookAndFeelClassName()
//Returns the name of the LookAndFeel class that implements the native system
look and feel if there is one, otherwise the name of the default cross platform
LookAndFeel class. This value can be overriden by setting the swing.systemlaf
system property.
* UIManager.LookAndFeelInfo[] laf = UIManager.getInstalledLookAndFeels();
//Returns an array of LookAndFeelInfos representing the LookAndFeel
implementations currently available. The LookAndFeelInfo objects can be used by an
application to construct a menu of look and feel options for the user, or to
determine which look and feel to set at startup time.

Notas:
-Librer�a: import javax.swing.UIManager;
-Esta clase se encarga de definir como ser� la vista de la GUI: Classic,
Windows, JAVA,...
-Se debe difinir antes de los componentes a los que se aplicar�??

-----------------------------------------------------------------------------------
-----------------
- Clase UIManager.LookAndFeelInfo:
* Provides a little information about an installed LookAndFeel for the sake of
configuring a menu or for initial application set up.

Ej de uso:
UIManager.LookAndFeelInfo[] laf = UIManager.getInstalledLookAndFeels();

- M�todos de UIManager.LookAndFeelInfo:
* Objeto.getClassName() //Returns the name of
the class that implements this look and feel (String).
* Objeto.getName() //Returns the name of
the look and feel in a form suitable for a menu or other presentation (String).
* Objeto.toString() //Returns a string that
displays and identifies this object's properties (String).

Notas:
-Librer�a: import javax.swing.UIManager.LookAndFeelInfo;
-Tipos de UIManager.LookAndFeel (ClassName):
-javax.swing.plaf.metal.MetalLookAndFeel
-javax.swing.plaf.nimbus.NimbusLookAndFeel
-com.sun.java.swing.plaf.motif.MotifLookAndFeel
-com.sun.java.swing.plaf.windows.WindowsLookAndFeel
-com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel

-----------------------------------------------------------------------------------
-----------------
- Clase JOptionPane:
* Ofrece varios m�todos para crear cajas de di�logo
* Existen cuatro tipos de cajas de dialogo:
* ConfirmDialog: SI/NO/CANCELAR, mensaje //devuelve
JOptionPane.YES_OPTION (es 0), JOptionPane.NO_OPTION (es 1),
JOptionPane.CANCEL_OPTION (es 2)
* Input Dialog: ACEPTAR/CANCELAR, campo de texto para su introducci�n
* MessageDialog: ACEPTAR, mensaje
* OptionDialog: Botones editables, mensaje (esta opci�n combina las
caracter�sticas de las anteriores)

Ej de uso:
int respuesta = JOptionPane.showConfirmDialog(null, "�Est�s seguro que
quieres borrar este archivo?");
String respuesta = JOptionPane.showInputDialog(null, "Escribe tu nombre:");
JOptionPane.showMessageDialog(null, "Existen actualizaciones para el
programa.");
int respuesta3 = JOptionPane.showOptionDialog(null,"�Qu� tipo de sitio
es?","Tipo Sitio",0,JOptionPane.QUESTION_MESSAGE,null,opciones,opciones[0]);
--> el bot�n presionado ser�: opciones[respuesta3]

- M�todos de JOptionPane:
* JOptionPane.showConfirmDialog(Componente/null, Objeto/mensaje,
string/t�tulo, botones, icono)
* JOptionPane.showInputDialog(Componente/null, Objeto/mensaje, string/t�tulo,
icono)
* JOptionPane.showMessageDialog(Componente/null, Objeto/mensaje,
string/t�tulo, icono)
* JOptionPane.showOptionDialog(Componente/null, Objeto/mensaje,
string/t�tulo, botones, icono, icono2, Object[], Object)

donde:
botones: define los botones a mostrar. Opciones:
JOptionPane.YES_NO_CANCEL_OPTION / JOptionPane.YES_CANCEL_OPTION
icono: define el icono a mostrar. Opciones: JOptionPane.ERROR_MESSAGE /
JOptionPane.INFORMATION#_MESSAGE / JOptionPane.PLAIN_MESSAGE /
JOptionPane.QUESTION_MESSAGE / JOptionPane.WARNING_MESSAGE
icono2: ?
Object[]: es un array que contendr� los nombres de los botones a definir.
Botones deja de ser valido
Object: indica la selecci�n por defecto de la caja de dialogo.

Notas:
-Librer�a: import javax.swing.JOptionPane;

-----------------------------------------------------------------------------------
-----------------

#########################################
Video 22 (Componentes Avanzados de Swing)
#########################################
- Thread.sleep(1000); //establece una pausa de 1 seg.

-----------------------------------------------------------------------------------
-----------------
- Clase JSlider:
* I...

Ej de uso:
JSlider miSlider = new JSlider(JSlider.HORIZONTAL, 0, 30, 5);
miSlider.setMajorTickSpacing(5);
miSlider.setMinorTickSpacing(2);
miSlider.setPaintTicks(true);
miSlider.setPaintLabels(true);
add(miSlider);

- Constructores:
-JSlider(int valorMinimo, int valorMaximo)
-JSlider(int valorMinimo, int valorMaximo, valorInicial)
-JSlider(int orientacion, int valorMinimo, int valorMaximo, valorInicial)

orientaci�n (del control):


-JSlider.VERTICAL (SwingConstants.HORIZONTAL??)
-JSlider.HORIZONTAL (SwingConstants.VERTICAL??)

- M�todos de JSlider:
* setMajorTickSpacing(int) //Define el intervalo de
los ticks mayores (ej: 5 --> va de 5 en 5)
* setMinorTickSpacing(int) //Define el intervalo de
los ticks menores (ej: 1 --> va de 1 en 1)
* setPaintTicks(boolean) //Define si se
visualizan o no, los ticks
* setPaintLabels(boolean) //Define si se
visualizan o no, las etiquetas de los ticks

Notas:
-Librer�a: import javax.swing.JSlider;
-...

-----------------------------------------------------------------------------------
-----------------
- Clase JScrollPane:
* Es un contenedor
* Para ser usado, a JScrollPane se le debe pasar el componente, finalmente, se
a�ade el JScrollPane al contenedor (el componente ya va impl�cito en el
JScrollPane)

Ej de uso:
JScrollPane scrollpane; //Se define la
variable tipo JScrollPane
public AreaTextoScroll() {
super("AreaTextoScroll");
setSize(500, 180);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea comentarios = new JTextArea(8, 40);
FlowLayout dis = new FlowLayout();
setLayout(dis);
add(comentarios);
scrollpane = new JScrollPane(comentarios); //Se crea el
objeto JScrollPane y se a�ade al componente "comentarios"
getContentPane().add(scrollpane, BorderLayout.CENTER);
//A�ade el JScrollPane al marco
setVisible(true);
...

- Constructores:
-JScrollPane(Objeto, HOR_SCR, VER_SCR)

donde:
HOR_SCR: HORIZONTAL_SCROLLBAR_ALWAYS / HORIZONTAL_SCROLLBAR_AS_NEEDED /
HORIZONTAL_SCROLLBAR_NEVER
VER_SCR: VERTICAL_SCROLLBAR_ALWAYS / VERTICAL_SCROLLBAR_AS_NEEDED /
VERTICAL_SCROLLBAR_NEVER

- M�todo de JScrollPane:
* JScrollPane.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);
* JScrollPane.setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ALWAYS);

Notas:
-Librer�a: import javax.swing.JScrollPane;
-...

-----------------------------------------------------------------------------------
-----------------
- Clase JList:
* I...???

Ej de uso:
xxxxx

- M�todo de JList:
* xxxxxxx --> xxxxxxxxxxxxxxxxxxxxxxxxx

Notas: - ...

-----------------------------------------------------------------------------------
-----------------
- Clase ImageIcon:
* ImageIcon(String) donde String corresponde al archivo de imagen a mostrar
(puede incluir el directorio)
* Archivos de imagenes del tipo gif, jpg, png (mayor calidad en transparencias??)
* Luego de creada la imagen la misma puede ser usada en etiquetas o botones:
- JLabel(ImageIcon)
- JButton(ImageIcon)

Ej de uso:
xxxxx

- M�todo de ImageIcon:
* xxxxxxx --> xxxxxxxxxxxxxxxxxxxxxxxxx
Notas: -Librer�a: import javax.swing.ImageIcon;

-----------------------------------------------------------------------------------
-----------------
- Clase JToolBar:
* I...

- Constructores:
-JToolBar()
-JToolBar(int orientaci�n)

donde orientaci�n:
-SwingConstants.HORIZONTAL (default)
-SwingConstants.VERTICAL

Ej de uso:
xxxxx

- M�todo de JToolBar:
* add(componentes) --> xxxxxxxxxxxxxxxxxxxxxxxxx

Notas: -Librer�a: import javax.swing.JToolBar;

-----------------------------------------------------------------------------------
-----------------
- Clase JProgressBar:
* I...

- Constructores:
-JProgressBar()
-JProgressBar(int valorMinimo, int valorMaximo)
-JProgressBar(int orientacion, int valorMinimo, int valorMaximo)

donde orientaci�n:
-SwingConstants.HORIZONTAL (default)
-SwingConstants.VERTICAL

Ej de uso:
JProgressBar actual = new JProgressBar(0, 2000);
actual.setValue(0);
actual.setStringPainted(true);

- M�todos de JProgressBar:
* Objeto.setMinimun(int) //Define el m�nimo de la
barra de progreso
* Objeto.setMaximun(int) //Define el m�ximo de la
barra de progreso
* Objeto.setValue(int) //Actualiza la barra de
progreso
* Objeto.setStringPainted(true); //Muestra el n�mero
correspondiente al porcentaje de avance de la barra de progreso

Notas: -Librer�a: import javax.swing.JProgressBar;

-----------------------------------------------------------------------------------
-----------------
- Clase JMenuItem/JMenu/JMenuBar:
* JMenuItem: corresponde a cada una de las posibles opciones dentro de un men�
desplegable, ej: Nuevo, Abrir, Guardar (opciones del men� Archivo)
* JMenu: corresponde con cada unade las opciones que se mostrar� en la barra de
men�s y contendr� los JMenuItem, ej: Archivo, Edici�n Formato, Ver
* JMenuBar: corresponde a la barra que alvergar� los distintos menu
desplegables (JMenu)
* Lo primero es crear los JMenuItem, luego creamos el JMenu y le agregamos los
JMenuItems, seguidamente, creamos el JMenuBar y le agregamos el JMenu. Por �ltimo,
a�adimos la barra de menus al marco

- Constructores:
-JMenuItem(String)
-JMenuItem(Icon)
-JMenuItem(String, Icon)
------------------------
-JMenu(String)
------------------------
-JMenuBar(String)

Ej de uso:
JMenuItem j1 = new JMenuItem("Abrir");
JMenuItem j4 = new JMenuItem("Baja");
JMenu menu = new JMenu("Ejemplo Men�");
menu.add(j1);
menu.addSeparator();
menu.add(j4);
JMenuBar menubar = new JMenuBar();
menubar.add(menu);

- M�todos de JMenuItem/JMenu/JMenuBar:
* JMenu.add(JMenuItem) //A�ade el JMenuItem al men�
(objeto JMenu)
* JMenu.addSeparator() //A�ade un separador al men�
(objeto JMenu)
* JMenu.add(String) //A�ade un string al men�
(objeto JMenu)
* JMenu.add(Component) //A�ade un componente al men�
(objeto JMenu)
* JMenuBar.add(JMenu) //A�ade el JMenu a la barra
de menus (objeto JMenuBar)
* setJMenuBar(JMenuBar) //A�ade la barra de menu al
marco

Notas: -Librer�a: import javax.swing.JMenuItem;


import javax.swing.JMenu;
import javax.swing.JMenuBar;

-----------------------------------------------------------------------------------
-----------------
- Clase JTabbedPane(JPanel):
* Lo primero que se debe hacer, es crear tantos JPanel como pesta�as se
requieran. Seguidamente, creamos el JTabbedPane y por �ltimo, le a�adimos cada uno
de los JPanel mediante el m�todo add()

- Constructores:
-JTabbedPane() //Dibuja la
pesta�a por defecto (Horizontal, superior, sin scroll)
-JTabbedPane(int localizaci�n)
-JTabbedPane(int localizaci�n, int scrolling)
donde:
localizaci�n:
-JTabbedPane.TOP (default)
-JTabbedPane.BOTTOM
-JTabbedPane.RIGHT
-JTabbedPane.LEFT

scrolling (comportamiento en caso de que el n�mero de pesta�as supere


el espacio en pantalla):
-JTabbedPane.WRAP_TAB_LAYOUT (default) //Crea una
segunda fila para las pesta�as que no alcancen a mostrarse en la 1ra fila
-JTabbedPane.SCROLL_TAB_LAYOUT //Se dibuja
un scroll que permite desplazar las pesta�as

Ej de uso:

- M�todo de JTabbedPane:
* JTabbedPane.addTab("Titulo",ImageIcon, JPanel); //Agregamos
un JPanel al JTabbedPane
* JTabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); //Define el
comportamiento en caso de que el n�mero de pesta�as supere el espacio en pantalla.
Posibles valores: JTabbedPane.WRAP_TAB_LAYOUT y JTabbedPane.SCROLL_TAB_LAYOUT
* JTabbedPane.setPreferredSize(new Dimension(410, 50)); //Sets
the preferred size of this component. If preferredSize is null, the UI will be
asked for the preferred size

Notas: -Librer�a: import javax.swing.JTabbedPane;

-----------------------------------------------------------------------------------
-----------------

#######################################################################
Video 23 (Gestores de Dise�o: Ordenar los Componentes en una Interface)
#######################################################################
- Para ordenar un conjunto de componentes en una interface usaremos un conjunto de
clases llamadas "layout managers" (gestores de dise�o)
- El uso de estos gestores permite crear programas que pueden ser adaptados a
cualquier plataforma que permita el uso de programas creados con Java
- Cada gestor de dise�o tiene un orden determinado en el cual colocar� los
componentes dentro de la interface
- EL gestor por defecto es el FlowLayout
- A continuaci�n, algunos de los gestores de swing:
- FlowLayout
- BoxLayout:
- BorderLayout:
- CardLayout:
- GridBagLayout:
- GridLayout:

- Ejemplo de uso:
FlowLayout milayout = new FlowLayout(FlowLayout.LEFT, 25, 15); //Lo
primero es instanciar un objeto de la clase correspondiente al gestor que deseamos
usar
setLayout(milayout); //Lo siguiente es
aplicar el gestor al contenedor con el m�todo setLayout
add(a); //A continuaci�n,
se agregan los componentes al contenedor. El orden en el que se
add(b); //a�eden los
componentes es importante en algunos gestores de dise�o
setVisible(true);
setLayout(null) //Eliminamos el
layout. Somos nosotros desde c�digo los que decimos cada bot�n en qu� posici�n va y
qu� tama�o ocupa
- System.exit(0); //Finaliza la aplicaci�n
de manera normal

-----------------------------------------------------------------------------------
-----------------
- Clase BoxLayout:
* Apila los componentes de izq a der o de arriba a abajo en el orden en que
fueron a�adidos al contenedor.
* El constructor debe recibir dos argumentos, el contenedor que gestionar� y la
alineaci�n (horizontal o vertical)

Ej de uso:
- BoxLayout boxLay = new BoxLayout(JPanel, BoxLayout.X_AXIS);
setLayout(boxLay);
- setLayout(new BoxLayout(JPanel, BoxLayout.X_AXIS));

- Constructor:
-BoxLayout(Contenedor, Alineaci�n)

donde:
-Contenedor: el contenedor que gestionar�
-Alineaci�n: BoxLayout.X_AXIS / BoxLayout.Y_AXIS

- M�todo de BoxLayout:
* xxxxxxx --> xxxxxxxxxxxxxxxxxxxxxxxxx

Notas: -Librer�a: import javax.swing.BoxLayout;

-----------------------------------------------------------------------------------
-----------------
- Clase GridLayout:
* Ordena los componentes en una parrilla de filas y columnas (comenzando por la
primera fila de izq a der)

Ej de uso:
- JPanel panel = new JPanel();
GridLayout miembros = new GridLayout(2, 2, 10, 10);
panel.setLayout(miembros);
panel.add(manuel);
panel.add(carla);
panel.add(gregorio);
panel.add(juan);
add(panel);
- setLayout(new GridLayout(3, 2));

- Constructor:
-GridLayout(NumeroFilas, NumeroColumnas)
-GridLayout(NumeroFilas, NumeroColumnas, SeparacionEntreColumnas,
SeparacionEntreFilas)

donde:
-NumeroFilas: n�mero de filas del Grid
-NumeroColumnas: n�mero de columnas del Grid
-SeparacionEntreColumnas: n�mero entero que representa la cantidad de
pixeles de separaci�n entre dos componentes de la misma l�nea
-SeparacionEntreFilas: n�mero entero que representa la cantidad de
pixeles de separaci�n entre dos l�neas de componentes

- M�todo de GridLayout:
* xxxxxxx --> xxxxxxxxxxxxxxxxxxxxxxxxx

Notas: -Librer�a: import javax.swing.GridLayout;

-----------------------------------------------------------------------------------
-----------------
- Clase BorderLayout:
* Divide el contenedor en cinco partes, north, south, east, west y center
* Los componentes se agregan al contenedor mediante el comando add, y se le pasan
dos argumentos, el componente en si y su ubicaci�n (BorderLayout.NORTH,
BorderLayout.SOUTH, BorderLayout.EAST, BorderLayout.WEST, BorderLayout.CENTER)
* North
West Center East
South

Ej de uso:
- setLayout(new BorderLayout());
add(botonN, BorderLayout.NORTH);
add(botonS, BorderLayout.SOUTH);
add(botonE, BorderLayout.EAST);
add(botonO, BorderLayout.WEST);
add(botonC, BorderLayout.CENTER);

- Constructor:
-BorderLayout()
-BorderLayout(SeparacionEntreColumnas, SeparacionEntreFilas)

donde:
-SeparacionEntreColumnas: n�mero entero que representa la cantidad de
pixeles de separaci�n entre dos componentes de la misma l�nea
-SeparacionEntreFilas: n�mero entero que representa la cantidad de
pixeles de separaci�n entre dos l�neas de componentes

- M�todo de BorderLayout:
* xxxxxxx --> xxxxxxxxxxxxxxxxxxxxxxxxx

Notas: -Librer�a: import javax.swing.BorderLayout;

-----------------------------------------------------------------------------------
-----------------
- Clase CardLayout:
* Esta formado por un grupo de contenedores/Componentes (llamados cartas) de los
cuales s�lo se mostrar� uno a la vez.
* La forma m�s com�n de usar este gestor, es usando un Panel para cada una de las
cartas, a estos se le a�aden los
componentes y luego los paneles se a�aden al contenedor general, que es el que
se configura para que se aplique el gestor CardLayout.
* Cuando este gestor se usa por primera vez, el contenedor/carta que se muestra
por primera vez, es el primero en crearce
* Ls siguientes cartas pueden llamarse mediante el m�todo show: show(Objeto/this,
String "Nombre de la carta");
* Los componentes se agregan al contenedor mediante: add(Contenedor/Componente,
String)
donde:
-Contenedor/Componente: contenedor o componente que se usa como carta
-String: es el nombre que queremos darle a la carta

Ej de uso:
- ...

- Constructor:
-CardLayout()

- M�todo de CardLayout:
* public�void�show(Objeto/this, String "Nombre de la carta"); -->
Flips to the component that was added to this layout with the specified name, using
addLayoutComponent. If no such component exists, then nothing happens.
* public�void�addLayoutComponent(Component�comp, Object�constraints) -->
Adds the specified component to this card layout's internal table of names. The
object specified by constraints must be a string. The card layout stores this
string as a key-value pair that can be used for random access to a particular card.
By calling the show method, an application can display the component with the
specified name

Notas: -Librer�a: import javax.swing.CardLayout;

-----------------------------------------------------------------------------------
-----------------
- Clase JRadioButton:
* I...

Ej de uso:
- ...

- Constructor:
-JRadioButton(String, State);
donde:
-String: etiquete del RadioButton
-State: estado actual del RadioButton (true --> enable, false -->
disable)

- M�todo de JRadioButton:
* ...

Notas: -Librer�a: import javax.swing.JRadioButton;

-----------------------------------------------------------------------------------
-----------------
- Clase ButtonGroup:
* I...

Ej de uso:
- respuesta[1] = new JRadioButton("Pregunta1", true);
respuesta[2] = new JRadioButton("Pregunta2", false);
ButtonGroup grupo = new ButtonGroup();
grupo.add(respuesta[1]);
grupo.add(respuesta[2]);

- Constructor:
-ButtonGroup();
- M�todo de ButtonGroup:
* public�ButtonModel�getSelection() //Returns the
model of the selected button.
Ejemplo:
class VotoActionListener implements ActionListener {
public void actionPerformed(ActionEvent ex) {
String eleccion =
grupo.getSelection().getActionCommand(); //recuperamos valor de ActionCommand con
getActionCommand() [debi� haber sido definido primero mediante setActionCommand()]
...

Notas: -Librer�a: import javax.swing.ButtonGroup;

-----------------------------------------------------------------------------------
-----------------
* Para dise�ar una interfaz, se debe pensar en esta como un conjunto de paneles,
los cuales tendr�n componentes y su propio gestor de dise�o. finalmente, estos
paneles ser�n ordenados dentro de un contenedor general, un marco por ejemplo,
el cual tambien tendr� su gestor de dise�o.

#############################################
Video 24 (Interactuar con eventos de usuario)
#############################################
- El paquete java.awt.event, contiene los event listeners (son interfaces), los
cuales son utilizados para manejar cada
uno de los tipos espec�ficos de eventos.
- A continuaci�n, algunos de los Event Listeners (vigilantes de eventos/interfaces)
definidos:
* ActionListener: eventos acci�n generados por usuarios
Metodos interface:
> public void actionPerformed(ActionEvent event)
Ejemplos:
-----------------------------------------------------
//creamos objeto de la clase VotoActionListener()
ActionListener al = new VotoActionListener();
//Debemos crear la clase VotoActionListener() la cual implementar� el m�todo
ActionListener();
pp.addActionListener(al);
//A�adimos ActionListener a pp
psoe.addActionListener(al);
//A�adimos ActionLister a psoe
iu.addActionListener(al);
//A�adimos ActionListerner a iu

class VotoActionListener implements ActionListener {


public void actionPerformed(ActionEvent ex) {
String eleccion =
grupo.getSelection().getActionCommand(); //recuperamos valor de ActionCommand con
getActionCommand()
System.out.println("Acci�n Candidato Seleccionado:
" + eleccion); //imprimimos valor recuperado
}
}
-----------------------------------------------------
b1.addActionListener(this);
b2.addActionListener(this);
public void actionPerformed(ActionEvent evt) {
Object fuente = evt.getSource();
if (fuente == b1) {
setTitle("Curso de JavaScript");
} else if (fuente == b2) {
setTitle("Curso de PHP");
}
repaint();
}
-----------------------------------------------------
b1.addActionListener(this);

public void actionPerformed(ActionEvent evt) {


b1.setActionCommand("prueba");
b1.setLabel(b1.getActionCommand());
repaint();
}
-----------------------------------------------------
final ButtonGroup grupo = new ButtonGroup();
//Se crea un grupo que contendr� 3 JRadioButton
grupo.add(pp);
grupo.add(psoe);
grupo.add(iu);

//creamos clase que implementa interface ActionListener


class VotoActionListener implements ActionListener {
public void actionPerformed(ActionEvent ex) {
String eleccion =
grupo.getSelection().getActionCommand(); //recuperamos valor de
ActionCommand con getActionCommand()
System.out.println("Acci�n Candidato Seleccionado:
" + eleccion); //imprimimos valor recuperado
}
}
-----------------------------------------------------

* AdjustmentListener: generados cuando un componente es ajustado (Scroll)

* FocusListener: un componente gana o pierde el foco


M�todos interface:
> focusGained(FocusEvent event)
> focusLost(FocusEvent event)

* ItemListener: cambios en items de Cajas o Listas (ej: marca de check)


Metodos interface:
> public void itemStateChanged(ItemEvent ex)
Ejemplos:
-----------------------------------------------------
public void itemStateChanged(ItemEvent event) {
int eleccion =
cajaFormato.getSelectedIndex();//obtenemos index del item seleccionado
if (eleccion > 0) {

etiquetaDescripcion.setText(descripciones[eleccion-1]); //configuramos texto


de etiqueta seg�n index del combo.
}
}
-----------------------------------------------------
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
label.setVisible(true);
//Need to revalidate and repaint, or else
the label will probably be drawn in the wrong place.
label.revalidate();
label.repaint();
} else {
label.setVisible(false);
}
}
-----------------------------------------------------
//creamos objeto de la clase VotoItemListener
ItemListener il = new VotoItemListener();
//Debemos crear la clase VotoItemListener() la cual implementar� el m�todo
ItemListener();
pp.addItemListener(il);
//A�adimos ItemListener a pp
psoe.addItemListener(il);
//A�adimos ItemListener a psoe
iu.addItemListener(il);
//A�adimos ItemListener a iu

//creamos clase que implementa interface ItemListener


class VotoItemListener implements ItemListener {
public void itemStateChanged(ItemEvent ex) {
String item = ((AbstractButton)
ex.getItemSelectable()).getActionCommand(); //recuperamos valor de
ActionCommand con getActionCommand()
boolean selected = (ex.getStateChange() ==
ItemEvent.SELECTED);
System.out.println("ITEM Candidato Seleccionado: "
+ selected + " Selecci�n: " + item); //imprimimos valor recuperado
}
}
-----------------------------------------------------
M�todos:
getItem();
public int getStateChange(); //
Returns the type of state change (selected or deselected) -->
ItemEvent.DESELECTED/itemEvent.SELECTED
getSelectedIndex();

* KeyListener: pulsaci�n de teclas


Metodos interface:
> public void keyPressed(KeyEvent event)
> public void keyReleased(KeyEvent event)
> public void keyTyped(KeyEvent event)

M�todos:
getKeyChar(); //devuelve el caracter de la tecla
presionada, de no existir, se devuelve KeyEvent.CHAR_UNDEFINED

* MouseListener: pulsaci�n o entrada de rat�n


Metodos interface:
> public void mouseClicked(MouseEvent event)
> public void mouseEntered(MouseEvent event)
> public void mouseExited(MouseEvent event)
> public void mousePressed(MouseEvent event)
> public void mouseReleased(MouseEvent event)

M�todos:
getClickCount(); //N�mero de pulsaciones
getPoint(); //Coordenada x,y del puntero como objeto Point
getX(); //Posici�n Y puntero
getY(); //Posici�n X puntero

* MouseMotionListener: movimiento de rat�n sobre componente


Metodos interface:
> public void mouseDragged(MouseEvent event)
> public void mouseMoved(MouseEvent event)

M�todos:
getClickCount(); //N�mero de pulsaciones
getPoint(); //Coordenada x,y del puntero como objeto Point
getX(); //Posici�n Y puntero
getY(); //Posici�n X puntero

* WindowListener: cambios en ventanas


Metodos interface:
> public void windowActivated(WindowEvent event)
> public void windowClosed(WindowEvent event)
> public void windowClosing(WindowEvent event)
> public void windowDeactivated(WindowEvent event)
> public void windowDeiconified(WindowEvent event)
> public void windowIconified(WindowEvent event)
> public void windowOpened(WindowEvent event)

* TextListener: ???

* ComponentListener: The listener interface for receiving component


events. The class that is interested in processing a component event either
implements this interface (and all the methods it contains) or extends the abstract
ComponentAdapter class (overriding only the methods of interest). The listener
object created from that class is then registered with a component using the
component's addComponentListener method. When the component's size, location, or
visibility changes, the relevant method in the listener object is invoked, and the
ComponentEvent is passed to it.
Component events are provided for notification purposes
ONLY; The AWT will automatically handle component moves and resizes internally so
that GUI layout works properly regardless of whether a program registers a
ComponentListener or not.
Metodos interface:
> void componentHidden(ComponentEvent�e) //Invoked
when the component has been made invisible.
> void componentMoved(ComponentEvent�e) //Invoked
when the component's position changes.
> void componentResized(ComponentEvent�e) //Invoked when the
component's size changes.
> void componentShown(ComponentEvent�e) //Invoked
when the component has been made visible.
- Una clase puede implementar tantos listeners como sea necesario: ...implements
ActionListener, TextListener {...
- Cada Event Listener debe contar con un M�todo Listener, estos �ltimos varian
segun el componente y le indican a los primeros,
cual componente vigilar.
- A continuaci�n, algunos de los M�todos Listeners:
* addActionListener(): componentes JButton, JCheckBox, JComboBox,
JTextField, JRadioButton y JMenuItem
* addAdjustmentListener: ???
* addFocusListener(): todos los componentes Swing
* addItemListener(): componentes JButton, JCheckBox, JComboBox y
JRadioButton
* addKeyListener(): todos los componentes Swing
* addMouseListener(): todos los componentes Swing
* addMouseMotionListener(): todos los componentes Swing
* addWindowListener(): componentes JWindow y JFrame
* addTextListener(): componentes JTextField y JTextArea
* addComponentListener(): componentes en general

- Ejemplo de uso:
JButton pulsar = new JButton("Aceptar"); //se crea el bot�n "pulsar"
pulsar.addActionListener(this); //se asocia un action event
listener al mismo

- Pasos requeridos para vigilar eventos de usuario:


* Implementar la interface Event Listener
* Definir el m�todo listener correspondiente al componente que se quiere
vigilar
* Implementar todos los m�todos de la interface

- Recordar a�adir los m�todos a los componentes antes de incluir estos en un


contenedor ### IMPORTANTE ###

- repaint(); --> repinta el componente desde el que se ejecuta este m�todo


(necesario luego de un cambio en el mismo)
- getSource() Object fuente = event.getSource(); //Permite determinar el
componente que gener� el evento
Ejemplo:
JButton b1 = new JButton("Curso de JavaScript");
JButton b2 = new JButton("Curso de PHP");
...
public void actionPerformed(ActionEvent evt) {
Object fuente = evt.getSource();
if (fuente == b1) {
setTitle("Curso de JavaScript");
...

- Adaptadores de Clase: son clases que implementadas los EventListeners e incluyen


todos los m�todos requeridos por estos (est�n vacios, s�lo es requerido que se
sobreescriban aquellos que deseamos usar)
* FocusAdapter //Clase que implementa la interface FocusListener
* KeyAdapter //Clase que implementa la interface KeyListener
* MouseAdapter //Clase que implementa la interface MouseListener
* MouseMotionAdapter //Clase que implementa la interface
MouseMotionListener
* WindowAdapter //Clase que implementa la interface WindowListener

Nota: se implementan igual que una clase, mediante el uso de la palabra reservada
'extends'

- instanceof if (fuente instanceof JButton) {... //Permite determinar el


tipo de componente. Sets the command name for the action event fired by this
button. By default this action command is set to match the label of the button.
- getActionCommand() --> Debio haber sido definido previamente el texto
mediante setActionCommand????
- setActionCommand(string)
- setLabel(String)

- focusGained() --> getSource(focusGained());


- focusLost() --> getSource(focusLost());
- b1.requestFocus();

- getOppositeComponent() --> public�Component�getOppositeComponent() //Returns


the other Component involved in this focus change. For a FOCUS_GAINED event, this
is the Component that lost focus. For a FOCUS_LOST event, this is the Component
that gained focus. If this focus change occurs with a native application, with a
Java application in a different VM or context, or with no other Component, then
null is returned.
- isTemporary() --> public�boolean�isTemporary() //Identifies the
focus change event as temporary or permanent.

- public class GridBagConstraints???


- display.setRequestFocusEnabled(false); (JTextArea)
- public class Vector<E>
- ComponentEvent e --> e.getComponent().getClass().getName() //con esta
seguidilla de m�todos se obtiene el nombre de la clase
- class Rectangle???
- invokeLater???
- Runnable()???
- Codigos del capitulo con algo pendiente de revisar o entender: ComprobarTecla,
FocusEventDemo, ItemEventDemo y WindowEventDemo

#########################################################
Video 25 (Taller pr�ctico: Creaci�n de una GUI funcional)
#########################################################
- En el c�digo se usaron las palabras reservadas: Runnable, Thread
- bola = (int) Math.floor(Math.random() * 50 + 1);

####################################################
Video 26 (Desarrollar Aplicaciones GUI con NetBeans)
####################################################
Source Packages --> RMB --> New --> Other... --> Seleccionar Swing GUI Forms -->
Seleccionar JFrame Form (en File Type) -- > Next (teniendo ya seleccionado el
proyecto) --> Darle un nombre a la clase y seleccionar un paquete

El icono [Add Mode] (simbolo de suma) de la barra de herramientas no aparece por


defecto, el mismo se activa mediante el RMB en la barra de tareas y seleccionando
[Show Add Button]
Propiedad toolTipText: ayuda que se muestra al tener el cursor encima de ese objeto

initComponents();???

- Forma de generar c�digo de eventos:


* Mediante el bot�n Conection Mode:
- Se presiona el bot�n Connection Mode
- Luego se presiona el componente origen (el mismo es resaltado en
rojo)
- Seguidamente presionamos el componente destino
- En la ventana que se abre, seleccionamos el tipo de evento y el
m�todo a utilizar (en la parte de abajo se sugiere un nombre para el m�todo)
- En la siguiente ventana se especifica el tipo de operaci�n deseada.
Seguir lo indicado...

* Mediante RMB sobre el objeto --> Events --> se selecciona el tipo de evento
--> se selecciona la acci�n. Esto generar� el encabezado del m�todo sobre el cual
se debe crear el c�digo.

- En este cap�tulo se explica como a�adir un archivo .jar a la libreria del


proyecto para que este sea incluido en el mismo (RMB sobre la carpeta Libraries del
proyecto)

- if (sText != null && sText.trim().length() > 0) {????????? ver donde colocar

########################################
Video 27 (Manejar errores y excepciones)
########################################
- La clase Throwable es la superclase de todos los errores y excepciones en java.
- Clase Throwable
|
----> Class Error: errores internos de la m�quina virtual de java.
|
----> Class Exception: la m�s relevante para nuestro c�digo
|
----> Class RuntimeException:

- Comandos para el manejo de errores (try - catch - throw - finally):


Ejemplo de uso:
try {
//declaraciones que pueden cusar la excepci�n
} catch (NumberFormatException e) {
//que hacer cuando la excepci�n ocurre
//throw e; //si se considera necesario
} catch (ArithmeticException|MalformedURLException e) { //A
restriction when using the multi-catch clause is that you can't use related
exceptions (subclasses) in the same clause because it is redundant
//que hacer cuando la excepci�n ocurre
System.out.println("Error: " + e.getMessage());
//throw e; //si se considera necesario
} catch (Exception e) {
//que hacer cuando ocurre una excepci�n no tratada en los catch
previos
e.printStackTrace();
//throw e; //si se considera necesario
} finally {
//declaraciones que se ejecutan siempre
}
donde:
- try: indica el inicio de la rutina encargada de atrapar
excepciones.
- catch: se utiliza uno por cada tipo de excepci�n, o uno para
el caso general, o ambos.
- throw: independientemente del tratamiento particular que se
de a cada excepci�n, throw permite lanzar esta a la clase que llama.
- finally: se ejecuta independientemente de que se haya dado o
no, uno de los catch previos.

- Excepciones (la m�s usadas):


- NumberFormatException: e.getMessage();
- ArithmeticException: e.getMessage();
- Exception e: e.printStackTrace();
- ArrayIndexOutOfBoundsException:
- MalformedURLException: e.getMessage();
- NullPointerException
- FileNotFoundException
- SecurityException
- IOException:
- FileNotFoundException

- El comando throws permite a un m�todo, reenviar una excepci�n al m�todo/clase


desde el cual es llamado, es decir, no es necesario hacer tratamientos de
excepciones dentro del mismo.
Ejemplo de uso:
public PaginaInicial(String enPropietario, String enDireccion) throws
MalformedURLException {
propietario = enPropietario;
direccion = new URL(enDireccion);
}
Notas:
- pueden colocarse varios tipos de excepsiones separandolas por comas
- el m�todo o clase al cual se le devuelve la excepci�n debe definido
el tratamiento de la misma mediante el uso de try-catch

- public�String�getMessage(): returns the detail message string of this Throwable


instance (which may be null).
- public void printStackTrace(): Prints this throwable and its backtrace to the
standard error stream. This method prints a stack trace for this Throwable object
on the error output stream that is the value of the field System.err.
- toString() ???? (relacionada con excepciones) Cap29

####################################################
Video 28 (Crear aplicaciones multitarea con threads)
####################################################
- Los Threads son la forma de organizar los programas para que hagan m�s de una
tarea a la vez. Para cada tarea se usa un thread distinto que a menudo se logra
implementando una clase distinta
- Los threads son representados por la CLase Threads y la Interface Runnable, ambas
forman parte del paquete de java.lang
- Una clase java que puede ser ejecutada como un thread, es denominada como una
'Clase Threated'
- Hay dos modos de colocar una tarea dentro de un Thread:
1. Poner la tarea en una clase que implemente la interface 'Runnable' (debe
implementar el m�todo 'run')
Ej:
public class CarruselDeEnlaces implements Runnable {
//cuerpo de la clase

public void run() {


//cuerpo del m�todo...

Notas:
- El m�todo 'run' no se ejecuta de manera automatica, primero se debe
crear el objeto de la clase Thread y posteriormente se debe llamar a su m�todo
start(), el cual llamar� al m�todo run().
- Codigo ejemplo de creaci�n del objeto Thread y llamado de su m�todo
start():
Thread ir;
...
if (ir == null) {
ir = new Thread(this);
ir.start();
}

2. Poner la tarea dentro de una clase que sea una subclase de 'Thread'

-----------------------------------------------------------------------------------
-----------------
- Clase Thread:
* ...

Ej de uso:
- ...

- Constructor:
- ...

- M�todo de Thread:
* public static�void�sleep(long�millis, int�nanos) throws
InterruptedException //Causes the currently executing thread to sleep (temporarily
cease execution) for the specified number of milliseconds plus the specified number
of nanoseconds, subject to the precision and accuracy of system timers and
schedulers. The thread does not lose ownership of any monitors.
Ej: Thread.sleep(5000); //Podr�a
lanzar una excepci�n, de ahi que deba usarse un try-catch para su uso
* public�void�start() //Causes
this thread to begin execution; the Java Virtual Machine calls the run method of
this thread. The result is that two threads are running concurrently: the current
thread (which returns from the call to the start method) and the other thread
(which executes its run method). It is never legal to start a thread more than
once. In particular, a thread may not be restarted once it has completed execution.
Throws: IllegalThreadStateException - if the thread was already started.
* public�void�stop()
//Deprecated. No se aconseja su uso.
* currentThread()????????

Nota: el m�todo stop() puede ser sobreescrito, por ejemplo:


public void stop() {
if (ejecutor != null) { //ejecutor
es un objeto Thread
ejecutor = null;
}
}
Notas: -Librer�a: import java.lang.Thread;

-----------------------------------------------------------------------------------
-----------------
- Interface Runnable:
* ...

Ej de uso:
- ...

- Constructor:
- ...

- M�todo de Runnable:
* run() //This method is called by
the Thread object and contains the work which should be done. Therefore the
"Runnable" is the task to perform. The Thread is the worker who is doing this task.

Notas: -Librer�a: import java.lang.Runnable;

-----------------------------------------------------------------------------------
-----------------
- Clase Color:
* The Color class is used to encapsulate colors in the default sRGB color space
or colors in arbitrary color spaces identified by a ColorSpace.

Ej de uso:
- Color.black; //Color
negro

- Constructor:
- Color(X, Y, Z)

- M�todo de Color:
* ...

Notas: -Librer�a: import java.awt.Color;

-----------------------------------------------------------------------------------
-----------------
- Clase Graphics2D:
* ...

Ej de uso:
- ...

- Constructor:
- ...

- M�todos de Graphics2D:
* setColor(Color darColor);
* fillRect(0, 0, getSize().width, getSize().height);
* setColor(Color.black);
* drawString(tituloPagina[actual], 5, 60);
* drawString("" + enlacePagina[actual], 5, 80);

Notas: -Librer�a: import java.awt.Graphics2D;


-----------------------------------------------------------------------------------
-----------------

- Para crear una pagina web desde Netbeans: New File --> Other --> HTML File -->
Next --> Colocar un nombre -- Finish
- En este cap�tulo se definio un applet dentro de una pagina web. Para ello se uso
el siguiente c�digo:
<applet
code="CarruselDeEnlaces.class"
codebase="..\\build\\classes"
width="300"
height="100">
</applet>

- Clase: AppletContext????
- m�todo de AppletContext: getAppletContext()????
- m�todo de AppletContext: showDocument????

- *** No me funcion� el applet de este capitulo ***


- *** Hay un ejemplo de applet en este cap�tulo ***

#########################################################
Video 29 (Comunicaciones - Trabajar con Inputs y Outputs)
#########################################################
- En Java todos los datos se escriben y se leen, entran y salen, usando Streams.
- Un Streams es una ruta de datos.
- Las clase InputStream y OutputStream son abstractas y por tanto no pueden
instanciarse.
- Los Streams Byte, trasladan n�meros enteros que van desde 0 a 255 (son subclase
de InputStream o de OutputStream).

- Pasos para crear un Stream de entrada:


* Crear un objeto asociado con una fuente de datos (Ej.: Archivo de disco
duro --> FileInputStream)
* Leer datos del objeto (ej.: con el m�todo read() de FileInputStream)
* Cerrar el Stream (ej.: m�todo close())

- Pasos para crear un Stream de entrada:


* Crear un objeto asociado con una fuente de datos (Ej.: Archivo de disco
duro --> FileOutputStream)
* Enviar datos al objeto (ej.: con el m�todo write() de FileOutputStream)
* Cerrar el Stream (ej.: m�todo close())

- Con el uso de filtros logramos un uso m�s eficiente de la lectura y/o escritura
de datos.
- Se pueden asociar filtros a otros filtros
- FilterInputStream y FilterOutputStream son subclases de
(InputStream/OutputStream). No son usadas directamente.

- Pasos para crear un filtro de entrada:


* Crear un objeto asociado con una fuente de datos (Clase
BufferedInputStream)
* Leer datos del objeto (ej.: con el m�todo read() de BufferedInputStream)
* Cerrar el Stream (ej.: m�todo close())

- Pasos para crear un filtro de salida:


* Crear un objeto asociado con una fuente de datos (Ej.: Clase
BufferedOutputStream)
* Enviar datos al objeto (ej.: con el m�todo write() de BufferedOutputStream)
* Cerrar el Stream (ej.: m�todo close())

- Al trabajar con Streams se deben tomar eb cuenta las excepciones


- Ejemplo de excepciones con Streams (todas subclases de IOException):
* FileNotFound
* EOFException

-----------------------------------------------------------------------------------
-----------------
- Clase FileInputStream (crea la ruta - stream):
* A FileInputStream obtains input bytes from a file in a file system. What files
are available depends on the host environment.
* FileInputStream is meant for reading streams of raw bytes such as image data.
For reading streams of characters, consider using FileReader.

Ej de uso:
- try {
FileInputStream archivo = new FileInputStream("clase.dat");
boolean eof = false;
int contador = 0;
while (!eof) {
int entrada = archivo.read();
System.out.print(entrada + " ");
if (entrada == -1) eof = true;
else contador++;
}
archivo.close();
System.out.println("\nBytes le�dos: " + contador);
} catch (IOException e) {
System.out.println("Error -- " + e.toString());
}

- Constructor:
- FileInputStream(String RutaYNombreArchivo)
- FileInputStream(File�file)

- M�todos de FileInputStream:
* read(); //devuelve un integer (entre 0 y 255) o -1 si
lleg� al EOF
* read(byte[], int A, int B); //Igual que el previo, y adicionalmente
se pasa el array que contendr� los datos (byte), el indice a partir del cual se
almacenar�n los mismos en el array (A), y la cantidad de bytes a leer (B). Devuelve
un integer, que representa el n�mero de bytes le�dos o -1, si llego al EOF
* close()

Notas: -Librer�a: import java.io.*;


-Stream tipo byte y subclase de InputStream
-En windows se usa doble backslash (\\) para identificar la ruta, mientras
que en linux se usa un slash (/)
ej. win: FileInputStream archivo = new
FileInputStream("\\datos\\clase.dat");
linux: FileInputStream archivo = new
FileInputStream("/datos/clase.dat");
-Usando la variable 'separator' de la Clase 'File' nos evitamos el tener que
verificar que separadoor usar.
ej.: char sep = File.separator;
FileInputStream f2 = FileInputStream(sep + datos + sep +
"clase.dat")
-----------------------------------------------------------------------------------
-----------------
- Clase FileOutputStream (crea la ruta - stream):
* A file output stream is an output stream for writing data to a File or to a
FileDescriptor.
* Whether or not a file is available or may be created depends upon the
underlying platform. Some platforms, in particular, allow a file to be opened for
writing by only one FileOutputStream (or other file-writing object) at a time. In
such situations the constructors in this class will fail if the file involved is
already open.
* FileOutputStream is meant for writing streams of raw bytes such as image data.
For writing streams of characters, consider using FileWriter.

Ej de uso:
- try {
FileOutputStream archivo = new FileOutputStream("pic.gif");
for (int i = 0; i < datos.length; i++) archivo.write(datos[i]);
archivo.close();
} catch (IOException e) {
System.out.println("Error -- " + e.toString());
}

- Constructor:
- FileOutputStream(String RutaYNombreArchivo)
//CUIDADO!!!: Si el archivo existe lo sobreescribe
- FileOutputStream(String RutaYNombreArchivo, boolean a�adir) //Si
a�adir es true, entonces se a�ade al final del archivo, si no se sobreescribe.

- M�todos de FileOutputStream:
* write(int a) //escribe un integer (debe ser entre 0 y
255)
* write(byte[], int A, int B); //Igual que el previo, y
adicionalmente se pasa el array que contiene los datos (byte), el indice a partir
del cual se escribir�n los mismos (A), y la cantidad de bytes a escribir (B).
* close()

Notas: -Librer�a: import java.io.*;


-Stream byte y subclase de OutputStream
-Todo lo indicado en la clase FileInputStream con relaci�n al separadpr de
ruta es aplicable a FileOutputStream
-----------------------------------------------------------------------------------
-----------------
- Clase BufferedInputStream:
* A BufferedInputStream adds functionality to another input stream-namely, the
ability to buffer the input and to support the mark and reset methods.
* When the BufferedInputStream is created, an internal buffer array is created.
As bytes from the stream are read or skipped, the internal buffer is refilled as
necessary from the contained input stream, many bytes at a time.
* The mark operation remembers a point in the input stream and the reset
operation causes all the bytes read since the most recent mark operation to be
reread before new bytes are taken from the contained input stream.

Ej de uso:
- ...

- Constructor:
- BufferedInputStream(InputStream in)
- BufferedInputStream(InputStream in, int sz) //Igual que el previo, y
adicionalmente se le indica el tama�o del buffer (sz)

- M�todos de BufferedInputStream:
* int read() //devuelve un integer (entre
0 y 255) o -1 si lleg� al EOF
* int read(byte[] b, int off, int len); //Igual que el previo, y
adicionalmente se pasa el array que contendr� los datos (byte), el indice a partir
del cual se almacenar�n los mismos (off), y la cantidad de bytes a leer (len).
Devuelve un integer, que representa el n�mero de bytes le�dos o -1, si llego al EOF
* void close()

Notas: -Librer�a: import java.io.BufferedInputStream;


-Stream tipo byte y subclase de FilterInputStream
-----------------------------------------------------------------------------------
-----------------
- Clase BufferedOutputStream:
* The class implements a buffered output stream.
* By setting up such an output stream, an application can write bytes to the
underlying output stream without necessarily causing a call to the underlying
system for each byte written.

Ej de uso:
- ...

- Constructor:
- BufferedOutputStream(OutputStream out)
- BufferedOutputStream(OutputStream out, int sz) //Igual que el previo, y
adicionalmente se le indica el tama�o del buffer (sz)

- M�todos de BufferedOutputStream:
* void write(int b) //escribe un integer (debe
ser entre 0 y 255)
* void write(byte[] b , int off, int len); //Igual que el previo, y
adicionalmente se pasa el array que contiene los datos (byte), el indice a partir
del cual se escribir�n los mismos (off), y la cantidad de bytes a escribir (len).
* void close()

Notas: -Librer�a: import java.io.BufferedOutputStream;


-Stream tipo byte y subclase de FilterOutputStream
-----------------------------------------------------------------------------------
-----------------

##################################################
Video 30 (Streams Datos, Texto y la Clase File)
##################################################
- System.out y System.in son objetos del tipo OutputStream e InputStream
respectivamente
- System.in recibe entradas desde el teclado las cuales pueden ser almacenadas en
un buffer de la siguiente manera:
* BufferedInputStream mandato = new BufferedInputStream (System.in);

- Recordar la necesidad que hay de usar try-catch con estas instrucciones

-----------------------------------------------------------------------------------
-----------------
- Clase StringBuffer:
* The significant performance difference between these two classes is that
StringBuffer is faster than String when performing simple concatenations
* A thread-safe, mutable sequence of characters.
* A string buffer is like a String, but can be modified. At any point in time it
contains some particular sequence of characters, but the length and content of the
sequence can be changed through certain method calls.
* String buffers are safe for use by multiple threads. The methods are
synchronized where necessary so that all the operations on any particular instance
behave as if they occur in some serial order that is consistent with the order of
the method calls made by each of the individual threads involved.
* The principal operations on a StringBuffer are the append and insert methods,
which are overloaded so as to accept data of any type. Each effectively converts a
given datum to a string and then appends or inserts the characters of that string
to the string buffer.

Ej de uso:
- ...

- Constructor:
- StringBuffer() //Constructs a string buffer with no
characters in it and an initial capacity of 16 characters.
- StringBuffer(CharSequence�seq) //Constructs a string buffer that
contains the same characters as the specified CharSequence.
- StringBuffer(int�capacity) //Constructs a string buffer with
no characters in it and the specified initial capacity.
- StringBuffer(String�str) //Constructs a string buffer
initialized to the contents of the specified string.

- M�todos de StringBuffer:
* StringBuffer�append(char�c) //Appends the
string representation of the char argument to this sequence. The argument is
appended to the contents of this sequence. The length of this sequence increases by
1. The append method always adds these characters at the end of the buffer.
* StringBuffer append(char[]�str) //Hay muchos
m�todos append con diferentes argumentos. Appends the string representation of the
char array argument to this sequence.
* String�toString() //Returns a string
representing the data in this sequence. A new String object is allocated and
initialized to contain the character sequence currently represented by this object.
This String is then returned. Subsequent changes to this sequence do not affect the
contents of the String.
* StringBuffer insert(int�offset, char�c) //Hay muchos
m�todos insert con diferentes argumentos. Inserts the string representation of the
char argument into this sequence.
* StringBuffer insert(int�index, char[]�str, int�offset, int�len)
//Inserts the string representation of a subarray of the str array argument
into this sequence.

Notas: -Librer�a: import java.lang.StringBuffer;


-Hereda de Object

-----------------------------------------------------------------------------------
-----------------
- Clase DataInputStream (funciona como filtro):
* A data input stream lets an application read primitive Java data types from an
underlying input stream in a machine-independent way.
* An application uses a data output stream to write data that can later be read
by a data input stream.
* DataInputStream is not necessarily safe for multithreaded access. Thread safety
is optional and is the responsibility of users of methods in this class.
Ej de uso:
- FileInputStream archivo = new FileInputStream("250primos.dat"); //Se
crea la ruta (stream) al archivo de entrada
BufferedInputStream buff = new BufferedInputStream(archivo); //Se
define el buffer para la ruta previamente creada (esto hace el proceso m�s
eficiente)
DataInputStream datos = new DataInputStream(buff); //Se
crea un filtro que permitir� leer datos primitivos de java a trav�s del buffer

- Constructor:
- DataInputStream(InputStream in); //Creates a
DataInputStream that uses the specified underlying InputStream.

- M�todos de DataInputStream:
* Boolean readBoolean();
* Byte readByte();
* Double readDouble();
* Float readFloat();
* Int readInt();
* Long readLong();
* Short readShort();
* void close();

Notas: -Librer�a: import java.io.DataInputStream;


-No hay nada que indique fin de lectura por lo que se debe esperar por un
EOF
-Stream tipo byte y subclase de FilterInputStream

-----------------------------------------------------------------------------------
-----------------
- Clase DataOutputStream (funciona como filtro):
* A data output stream lets an application write primitive Java data types to an
output stream in a portable way.
* An application can then use a data input stream to read the data back in.

Ej de uso:
- FileOutputStream archivo = new FileOutputStream("250primos.dat"); //Se
crea la ruta (stream) al archivo de salida
BufferedOutputStream buff = new BufferedOutputStream(archivo); //Se
define el buffer para la ruta previamente creada (esto hace el proceso m�s
eficiente)
DataOutputStream datos = new DataOutputStream(buff); //Se
crea un filtro que permitir� escribir datos primitivos de java a trav�s del buffer

- Constructor:
- DataOutputStream(OutputStream out); //Creates a
new data output stream to write data to the specified underlying output stream.

- M�todos de BufferedOutputStream:
* void writeBoolean(Boolean);
* void writeByte(Byte);
* void writeDouble(Double);
* void writeFloat(Float);
* void writeInt(Int);
* void writeLong(Long);
* void writeShort(Short);
* void close();
Notas: -Librer�a: import java.io.DataOutputStream;
-Stream tipo byte y subclase de FilterOutputStream

-----------------------------------------------------------------------------------
-----------------
- Clase FileReader (crea la ruta - stream):
* SE USA PARA LEER ARCHIVOS DE TEXTO
* Convenience class for reading character files.
* The constructors of this class assume that the default character encoding and
the default byte-buffer size are appropriate. To specify these values yourself,
construct an InputStreamReader on a FileInputStream.
* FileReader is meant for reading streams of characters. For reading streams of
raw bytes, consider using a FileInputStream.

Ej de uso:
- File fuente = new File(nombreFuente); // Se crea un objeto
tipo File que contendr� el archivo a leer
FileReader fr = new FileReader(temp); // Se crea la ruta
(stream) al archivo de entrada.
BufferedReader in = new BufferedReader(fr); // Se define el buffer
de entrada para la ruta previamente creada (esto hace el proceso m�s eficiente)

- Constructor:
- FileReader(File�file) //Creates a new FileReader,
given the File to read from.
- FileReader(FileDescriptor�fd) //Creates a new
FileReader, given the FileDescriptor to read from.
- FileReader(String�fileName) //Creates a new FileReader,
given the name of the file to read from.

- M�todos de FileReader:
* int read(); //Devuelve un entero que
representa el caracter que se acaba de leer (se debe convertir a char)
* int read(char[] cbuf , int offset, int length) //Igual que el previo,
adicionalmente se pasa el array que contendr� los datos, el indice a partir del
cual se almacenar�n los mismos (offset), y la cantidad de bytes a leer (length).
Devuelve un integer, que representa el n�mero de bytes le�dos o -1, si llego al EOF
* void close();

Notas: -Librer�a: import java.io.FileReader;


-Hereda de InputStreamReader (quien a su vez es subclase de java.io.Reader)
-----------------------------------------------------------------------------------
-----------------
- Clase BufferedReader:
* Reads text from a character-input stream, buffering characters so as to provide
for the efficient reading of characters, arrays, and lines.
* The buffer size may be specified, or the default size may be used. The default
is large enough for most purposes.
* In general, each read request made of a Reader causes a corresponding read
request to be made of the underlying character or byte stream. It is therefore
advisable to wrap a BufferedReader around any Reader whose read() operations may be
costly, such as FileReaders and InputStreamReaders. For example, BufferedReader in
= new BufferedReader(new FileReader("foo.in")); will buffer the input from the
specified file.
* Without buffering, each invocation of read() or readLine() could cause bytes to
be read from the file, converted into characters, and then returned, which can be
very inefficient.
* Programs that use DataInputStreams for textual input can be localized by
replacing each DataInputStream with an appropriate BufferedReader.

Ej de uso:
- File fuente = new File(nombreFuente); // Se crea un objeto
tipo File que contendr� el archivo a leer
FileReader fr = new FileReader(temp); // Se crea la ruta
(stream) al archivo de entrada (puede utilizarse otro stream como pr ejemplo
InputStreamReader)
BufferedReader in = new BufferedReader(fr); // Se define un buffer
de entrada para la ruta previamente creada (esto hace el proceso m�s eficiente)

--> inChar = in.read(); para leer

- Constructor:
- BufferedReader(Reader in);
- BufferedReader(Reader in, int sz); //Igual que el previo, y
adicionalmente se le indica el tama�o del buffer (sz)

- M�todos de BufferedReader:
* public String readLine(); //Lee una linea de texto. No
incluye '\n' ni '\r' o '\n\r'. Devuelve 'null' al final (EOF)
* public int read(); //Devuelve un entero que
representa el caracter que se acaba de leer (se debe convertir a char)
* public int read(char[] cbuf, int off, int len) //Igual que el previo,
adicionalmente se pasa el array que contendr� los datos, el indice a partir del
cual se almacenar�n los mismos (off), y la cantidad de bytes a leer (len). Devuelve
un integer, que representa el n�mero de bytes le�dos o -1, si llego al EOF
* close();

Notas: -Librer�a: import java.io.BufferedReader;


-Hereda de la clase Reader

-----------------------------------------------------------------------------------
-----------------
- Clase FileWriter (crea la ruta - stream):
* SE USA PARA ESCRIBIR ARCHIVOS DE TEXTO
* Convenience class for writing character files.
* The constructors of this class assume that the default character encoding and
the default byte-buffer size are acceptable.
* To specify these values yourself, construct an OutputStreamWriter on a
FileOutputStream.
* FileWriter is meant for writing streams of characters. For writing streams of
raw bytes, consider using a FileOutputStream.

Ej de uso:
- File fuente = new File(nombreFuente); // Se crea un
aobjeto tipo File el cual contendr� el archivo a escribir
FileWriter fw = new FileWriter(temp); // Se crea el objeto
tipo FileWriter (stream output) al cual se le pasa el archivo a escribir.
BufferedWriter out = new BufferedWriter(fw); // Por �ltimo se
crea un buffer de salida () el cual es m�s eficiente en su trabaja

- Constructor:
- FileWriter(String file); //Sobreescribir� el
archivo indicado
- FileWriter(String file, boolean append); //Igual que el
previo y adicionalmente se le indica si se desea a�adir al final del archivo
(append=true) o sobreescribir (append=false)
- FileWriter(File file);
- FileWriter(File�file, boolean�append)

- M�todos de FileWriter:
- void write(int c); //Writes a single
character
- void write(char[] cbuf, int off, int len) //Igual que el
previo, adicionalmente se pasa el array que contiene los datos, el indice a partir
del cual se escribir�n los mismos (off), y la cantidad de bytes a escribir(len).
- void write(String str, int off, int len); //Writes a portion
of a string.
- void close();
- void�newLine(); //Writes a new line. Throws
IOException

Notas: -Librer�a: import java.io.FileWriter;


-Hereda de OutputStreamWriter (quien a su vez es subclase de java.io.Writer)

-----------------------------------------------------------------------------------
-----------------
- Clase BufferedWriter:
* Writes text to a character-output stream, buffering characters so as to provide
for the efficient writing of single characters, arrays, and strings.
* The buffer size may be specified, or the default size may be accepted. The
default is large enough for most purposes.
* A newLine() method is provided, which uses the platform's own notion of line
separator as defined by the system property line.separator. Not all platforms use
the newline character ('\n') to terminate lines. Calling this method to terminate
each output line is therefore preferred to writing a newline character directly.
* In general, a Writer sends its output immediately to the underlying character
or byte stream. Unless prompt output is required, it is advisable to wrap a
BufferedWriter around any Writer whose write() operations may be costly, such as
FileWriters and OutputStreamWriters. For example, PrintWriter out = new
PrintWriter(new BufferedWriter(new FileWriter("foo.out"))); will buffer the
PrintWriter's output to the file.
* Without buffering, each invocation of a print() method would cause characters
to be converted into bytes that would then be written immediately to the file,
which can be very inefficient.

Ej de uso:
- File fuente = new File(nombreFuente); // Se crea un
aobjeto tipo File el cual contendr� el archivo a escribir
FileWriter fw = new FileWriter(temp); // Se crea el objeto
tipo FileWriter (stream output) al cual se le pasa el archivo a escribir.
BufferedWriter out = new BufferedWriter(fw); // Por �ltimo se
crea un buffer de salida () el cual es m�s eficiente en su trabaja
--> out.write(char outChar); para escribir

- Constructor:
- BufferedWriter(Writer out); //Creates a buffered
character-output stream that uses a default-sized output buffer.
- BufferedWriter(Writer out, int sz); //Creates a new buffered
character-output stream that uses an output buffer of the given size.

- M�todos de BufferedWriter:
* void newLine() //Env�a un EOL al archivo (es
preferible usar este al conocido '\n\r', ya que este �ltimo variar� en funci�n del
sistema operativo
* void write(int); //Writes a single character.
* void write(char[] cbuf , int off, int len) //Writes a portion of an
array of characters.
* void write(String str, int off, int len); //Writes a portion of a
String.
* void close();

Notas: -Librer�a: import java.io.BufferedWriter;


-Hereda de la clase Writer

-----------------------------------------------------------------------------------
-----------------
- Clase File:
* Se usa para representar un archivo o directorio de referencia

Ej de uso:
- File fuente = new File(nombreFuente); // Se crea un aobjeto tipo
File el cual contendr� el archivo a escribir
FileWriter fw = new FileWriter(temp); // Se crea el objeto tipo
FileWriter (stream output) al cual se le pasa el archivo a escribir.
BufferedWriter out = new BufferedWriter(fw); // Por �ltimo se crea un
buffer de salida () el cual es m�s eficiente en su trabaja

- Constructor:
- File(String ruta);
- File(String ruta, String archivo);
- File(File ruta, String archivo);
- File(URI�uri)????? //visto en la ayuda

- M�todos de File:
* boolean exists(); //Tests whether the file or
directory denoted by this abstract pathname exists. Devuelve true o false
dependiendo de si el arcivo existe
* long length(); //Devuelve el numero de bytes
de un archivo (en caso de que exista)
* boolean renameTo(File archivo); //Renombra el archivo al argumento
'File' especificado
* boolean delete(File archivo); //Borra un archivo de manera
inmediata. Devuelve true o false para indicar su exito
* void deleteOnExit(); //Requests that the file or
directory denoted by this abstract pathname be deleted when the virtual machine
terminates.
* String getName(); //Devuelve el nombre del archivo
* String getPath(); //Devuelve la ruta del archivo
* boolean mkdir(); //Creates the directory named by
this abstract pathname.
* boolean mkdirs(); //Creates the directory named by
this abstract pathname, including any necessary but nonexistent parent directories.
* boolean delete(File ruta); //Borra un directorio de manera
inmediata. Devuelve true o false para indicar su exito
* boolean isDirectory(File ruta); //Indica si es un directorio existe
* String[] list() //Returns an array of strings naming the
files and directories in the directory denoted by this abstract pathname.
* Files[] listFiles(File ruta); //Devuelve un array de tipo File[],
con los archivos existentes en el directorio

Nota: todos estos m�todos pueden lanzar una securityException, en caso de que
el programa no tenga la seguridad de poder ejecutar la operaci�n

Notas: -Librer�a: import java.io.File;


-----------------------------------------------------------------------------------
-----------------
- *** El c�digo EntradaConsola, se puede tomar para otros programas, donde se
requiera leer del teclado ***

####################################################
Video 31 (Desarrollar aplicaciones Web con NetBeans)
####################################################
IMPORTANTE:
* Para los que no encuentran en NetBeans 7.4 la opci�n Java Web, es porque
han bajado el Java Se en vez del EE. Han de ir a Tools->Plugins,
buscar el plugin Java EE Base, seleccionarlo e instalarlo.?
* Y para los que buscan el CSS Style Builder, fue quitado en NetBeans 7.3.
As� que en 7.4 deben usar el que est� en Windows->Web->CSS Styles.
No es exactamente igual, no tenemos esa previsualizaci�n tan chula, pero es
lo �nico que hay.?
* Para los que no encuentran el bot�n de Create Rule en NetBeans 7.4, han de
darle en el c�digo con el bot�n derecho del rat�n -> Inset Code -> CSS Rule.
Y ya llegan al mismo formulario que en el v�deo
* En este capitulo hay una breve explicaci�n de como instalar Tomcat (para
nuestro caso, se uso admin como usuario y pass en su creacion)
* Install some Java Enterprise Edition resources through NetBeans to avoid
errors. Go to Plugins and accept to install the plugin named "EJB and EAR".
* CSS Style Builder fue removido en las nuevas versiones de NetBeans, ahora
existe Window --> Web --> CSS Styles (se puede personalizar el boton en el toolbar)

- Paquetes de interes: java.net y java.nio


- Desde java podemos:
1. Cargar una p�gina web o cualquier otro recurso (URL / applet de java)
2. Abrir conexiones socket est�ndar (class Socket / ServerSocket)
3. Abrir una conexi�n URL y extraer datos desde ella (mediante el m�todo
getInputStream())

- Para cargar un archivo de texto desde la web, podemos seguir un proceso de 4


pasos:
1. Crear un objeto URL (representa la direcci�n web)
2. Crear objeto HttpURLConnection (carga la URL previa y establece la
conexi�n al sitio URL donde se aloja)
3. Hacemos uso del m�todo getContent (perteneciente al objeto
HttpURLConnection). Con esto se crea un InputStreamReader el cual puede leer un
stream de datos desde la URL
4. Creamos un objeto BufferedReader, el cual estar� encargado de almacenar
los caracteres que posteriormente usaremos en nuestra aplicaci�n.

- NetBeans --> Proyectos (Java Web --> Web application) --> da soporte a
HTML/CSS/JavaScript/JSP/Visual JSF
* JSP: JavaServer Pages
* Visual JSF: pluging Visual JavaServer Faces --> permite desarrollar
aplicaciones web de modo visual

- NetBeans a traves de la adici�n de otros plugins, permite incorporar a nuestros


desarrollos, Struts, JavaServer Pages, Ajax, etc...

- Creaci�n de un proyecto web:


* New Project --> Java Web --> Web application --> NEXT
* Le damos un nombre --> NEXT
* Seleccionamos el Server (tomcat para nuestro ejemplo, descargado desde
http://tomcat.apache.org [.zip])--> NEXT
* Seleccionamos el framework (Struts para nuestro ejemplo)
* Posteriormente y en la misma ventana, colocamos en 'Aplication Resource',
la ruta del paquete donde est�n los recursos que usar� la aplicaci�n (para nuestro
ejemplo: com.illasaron.struts.ApplicationResource)
CSS:
====
* Para agregar un archivo CSS al proyecto: File --> New File --> en categor�a
Web seleccionamos 'Cascading Style Sheet'. Le colocamos un nombre --> Finish
* Mediante RMB >> [Insert code...] >> [Css rule] creamos reglas dentro de
nuestro archivo CSS
* Con CSS Styles podemos editar las propiedades de dichas reglas
JavaScript:
===========
* Desde Netbeans podemos trabajar con archivo .jsp y .js (archivo de
JavaScript independiente)
* Para crear un nuevo JavaScript, pulsamos [RMB - sobre la carpeta donde
guerdaremos el archivo] >> New >> [JavaScript File...] (en caso de no observarse,
selecionar [Other...] >> Web >> [JavaScript File...])
* Adicionalmente, podemos agregar un bloque de JavaScript directamente dentro
de un archivo, sea HTML, JSP, etc.
* Si estamos en la l�nea de c�digo, presionando [Ctrl + Space] y se nos
abrir� una ventana de ayuda, con auto-completaci�n, sintaxis, etc.
Construir una aplicacion Web:
=============================
* El proyecto debe estar definido como principal (Run >> [Set Main Project]
>> [El Proyecto en cuestion])
* Seleccionamos Run >> [Build Main Project] o F11
* A partir del primer build, si realizamos nuevos cambios deberiamos
ejecutar, Run >> [Clean and Build Main Project], con esto nos aseguramos que se
limpie cualquier archivo previo antes de la nueva ejecuci�n
* Una opci�n importante y que debemos habiliar, RMB (sobre el proyecto) >>
Properties >> Compiling >> marcamos la opci�n Test compile all JSP...
* El archivo final de distribuci�n esta en [Ventana Files] >> [carpeta dist]
>> NombreProyecto.war
* Si por alguna razon el archivo no es creado, se puede forzar mediante: RMB
(sobre el proyecto) >> Properties >> Packaging >> colocamos el
NombreProyecto.war????
* En las propiedades del proyecto RUN >> Relative URL, se puede especificar
la direcci�n que deseamos se abra para el proyecto. En caso contrario se abrir� la
que el servidor Web determine

Notas:
- A partir de NetBeans v6 se mejor� el soporte de CSS y Java Scripts
- Para proyectos de aplicaciones Java el archivo de distribucion tendr�
extenci�n .jar
- Para proyectos de aplicaciones Web el archivo de distribucion tendr�
extenci�n .war

-----------------------------------------------------------------------------------
-----------------
- Clase URL:
* Class URL represents a Uniform Resource Locator, a pointer to a "resource" on
the World Wide Web.
* A resource can be something as simple as a file or a directory, or it can be a
reference to a more complicated object, such as a query to a database or to a
search engine
* Dada las excepciones que se puedeb producir, se debe usar un try-catch
Ej de uso:
- try {
URL load = new URL("http://www.videotutoriales.com");
} catch (MalformedURLException e) {
System.out.println("URL incorrecta");

- Constructor:
- URL(String address);
- URL(getDocumentBase(), textoURL); //Se
deb usar un try-catch en caso de que se produzca la excepci�n MalformedURLException
- URL(String�spec)
//Creates a URL object from the String representation.
- URL(String�protocol, String�host, int�port, String�file)
//Creates a URL object from the specified protocol, host, port number, and
file.
- URL(String�protocol, String�host, int�port, String�file,
URLStreamHandler�handler) //Creates a URL object from the specified protocol,
host, port number, file, and handler.
- URL(String�protocol, String�host, String�file)
//Creates a URL from the specified protocol name, host name, and file name.
- URL(URL�context, String�spec)
//Creates a URL by parsing the given spec within a specified context.
- URL(URL�context, String�spec, URLStreamHandler�handler)
//Creates a URL by parsing the given spec with the specified handler within a
specified context.

- M�todo de URL:
* URLConnection openConnection()
//Returns a URLConnection instance that represents a connection to the remote
object referred to by the URL.
* URLConnection openConnection(Proxy�proxy)
//Same as openConnection(), except that the connection will be made through
the specified proxy; Protocol handlers that do not support proxing will ignore the
proxy parameter and make a normal connection.

Notas: -Librer�a: import java.net.URL;


-Hereda de Object

-----------------------------------------------------------------------------------
-----------------
- Clase HttpURLConnection:
* A URLConnection with support for HTTP-specific features.
* Each HttpURLConnection instance is used to make a single request but the
underlying network connection to the HTTP server may be transparently shared by
other instances.
* Calling the close() methods on the InputStream or OutputStream of an
HttpURLConnection after a request may free network resources associated with this
instance but has no effect on any shared persistent connection.
* Calling the disconnect() method may close the underlying socket if a persistent
connection is otherwise idle at that time.

Ej de uso:
- URL pagina = new URL(direccion);
try {
HttpURLConnection con = (HttpURLConnection) pagina.openConnection();
con.connect();
InputStreamReader in = new InputStreamReader((InputStream)
con.getContent());
BufferedReader buff = new BufferedReader(in);
...
} catch (IOException ioe) {
System.out.println("IO Error:" + ioe.getMessage());
}

- Constructor:
- protected HttpURLConnection(URL�u) //Constructor for
the HttpURLConnection.

- M�todos de HttpURLConnection:
- void� connect() throws IOException //Opens a
communications link to the resource referenced by this URL, if such a connection
has not already been established. If the connect method is called when the
connection has already been opened (indicated by the connected field having the
value true), the call is ignored.
- Object�getContent() throws IOException //Retrieves the contents
of this URL connection. This method first determines the content type of the object
by calling the getContentType method.

Notas: -Librer�a: import java.net.HttpURLConnection;


-Hereda de URLConnection

-----------------------------------------------------------------------------------
-----------------
- Clase InputStreamReader (crea la ruta - stream):
* An InputStreamReader is a bridge from byte streams to character streams: It
reads bytes and decodes them into characters using a specified charset.
* The charset that it uses may be specified by name or may be given explicitly,
or the platform's default charset may be accepted.
* Each invocation of one of an InputStreamReader's read() methods may cause one
or more bytes to be read from the underlying byte-input stream. To enable the
efficient conversion of bytes to characters, more bytes may be read ahead from the
underlying stream than are necessary to satisfy the current read operation.
* For top efficiency, consider wrapping an InputStreamReader within a
BufferedReader. For example: BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));

Ej de uso:
- HttpURLConnection con = (HttpURLConnection) pagina.openConnection();
// Se crea el objeto que contendr� la conexi�n
con.connect(); // Se
establece la conexi�n
InputStreamReader in = new InputStreamReader((InputStream)
con.getContent()); // Se crea la ruta (stream) al recurso del que se
desean obtener datos
BufferedReader buff = new BufferedReader(in);
// Se define el buffer de entrada para la ruta previamente creada (esto hace
el proceso m�s eficiente)

- Constructor:
- InputStreamReader(InputStream�in) //Creates an
InputStreamReader that uses the default charset.
- InputStreamReader(InputStream�in, Charset�cs) //Creates an
InputStreamReader that uses the given charset.
- InputStreamReader(InputStream�in, CharsetDecoder�dec) //Creates an
InputStreamReader that uses the given charset decoder.
- InputStreamReader(InputStream�in, String�charsetName) //Creates an
InputStreamReader that uses the named charset.

- M�todos de InputStreamReader:
* int read(); //Devuelve un entero que
representa el caracter que se acaba de leer (se debe convertir a char)
* int read(char[] cbuf , int offset, int length) //Igual que el previo,
adicionalmente se pasa el array que contendr� los datos, el indice a partir del
cual se almacenar�n los mismos (offset), y la cantidad de bytes a leer (length).
Devuelve un integer, que representa el n�mero de bytes le�dos o -1, si llego al EOF
* void close();

Notas: -Librer�a: import java.io.InputStreamReader;


-Hereda de Reader (quien a su vez es subclase de Object)
-----------------------------------------------------------------------------------
-----------------

##################################################################
Video 32 (Uso de Tomcat, Glassfish, Struts y Struts 2 en NetBeans)
##################################################################
- Toda aplicaci�n web requiere el uso de un servidor, ej: Tomcat (tambien llamado
Apache Tomcat) y Glassfish
- Los Frameworks para aplicaciones web, son herramientas de soporte que a�aden
funcionalidades, permiten extender las aplicaciones web y nos proveen con
caracter�sticas que no aparecen de modo estandar en el desarrollo. Nos proveen de
Widgets, herramientas que mejoran en muchas ocaciones el proceso, tanto de la
arquitectura del backend, como tambien de la interfaz de usuario en el front de la
aplicaci�n.
- Hay muchos Frameworks que tienen pluggins que permiten integrar estos a NetBeans
- Ejemplos de Frameworks: Java Server Faces, Struts, Struts2, Spring, Hibernate,
Apache CFX, etc.

GENERAL:
========
- Tal y como vimos en el c�pitulo pasado, desde NetBeans podemos acceder a los
servidores mediante: Tools >> Servers
- En Tools >> Servers >> Platform >> VM Options, se pueden pasar comandos a la
m�quina virtual de Java al momento de su inicio.
- Haciendo RMB sobre cualquier aplicaci�n y seleccionando 'Undeploy', desacoplamos
dicha aplicaci�n del servidor
- En las propiedades del proyecto (RMB sobre el mismo >> properties) >> Run >>
Server, podemos elegir el servidor que queremos usar para nuestra aplicaci�n,
Toncat, Glassfish, etc...
- En caso de que se vaya a usar m�s de una instancia de Tomcat/Glassfish en la
misma m�quina, se debe asignar un puerto distinto a cada una (Tools >> Servers >>
Connection >> Server Port)
- Lo anterior tambien es cierto para dos servidores distintos en la misma m�quina
(por ejemplo Tomcat y Glassfish), asi evitamos que se anulen entre ellos.
- Monitorizaci�n HTTP: ver el intercambio de informaci�n entre el navegador y el
servidor para asi comprobar el funcionamiento de nuestra pagina web
- En las propiedades del proyecto (RMB sobre el mismo >> properties) >> Frameworks,
podemos agregar Frameworks al proyecto

TOMCAT:
=======
- P�gina web: tomcat.apache.org
- Tomcat no es un simple servidor web de aplicaciones, tambien incluye el
compilador 'Jasper' el cual convierte las p�ginas .jsp en servlets
- Tomcat esta escrito en Java
- En la ventana Services >> Server >> Tomcat >> Web aplications se encuentran las
aplicaciones asociadas a este servidor
- En la ventana Services >> Server >> Tomcat, con RMB tenemos acceso a muchas
opciones para gestionar Tomcat desde NetBeans
- Soporta Monitorizaci�n HTTP (Tools >> Servers >> Connection >> Enable HTTP
Monitor)

GLASSFISH:
==========
- P�gina web: https://glassfish.java.net/
- En la ventana Services >> Server >> Glassfish >> Aplications se encuentran las
aplicaciones asociadas a este servidor
- En la ventana Services >> Server >> Glassfish, con RMB tenemos acceso a muchas
opciones para gestionar Glassfish desde NetBeans
- Soporta Monitorizaci�n HTTP (Tools >> Servers >> Common >> Enable HTTP Monitor)

Framework Struts y Strut 2


==========================
- P�gina Web: http://struts.apache.org/
- P�gina para descargar plugin para NetBeans:
http://plugins.netbeans.org/plugin/39218
- Struts es un Framework java MVC (Modelo-Vista-Controlador)
- Esta siendo usado por desarrolladores java para crear aplicaciones web que
separan claramente la l�gica del negocio, el funcionamiento interno (que es el
Modelo), el control de flujo, que es el encargado de regular el tr�fico en la
aplicaci�n (que es el controlador) y la presentaci�n o interfaz gr�fica (que es la
vista)
- Apartir del min 40 aprox. se crea una clase con Struts
- Apartir del min 46:30 se habla de Struts2
- Strut2 ha sido completamente reestructurado, cuenta con nuevas caracteristicas y
con soporte para nuevas tecnolog�as como Ajax
- Netbeans no proporciona el plugin de Struts2 porlocual debemos hacerlo
manualmente desde la pagina: http://plugins.netbeans.org/plugin/23467/netbeans-
struts2-support
- ***No encuetro la ventana HTTP Server Monitor min 24 aprox..***

################################################
Video 33 (Uso de Visual Java Server Faces - JSF)
################################################
Framework Visual Java Server Faces - JSF
========================================
- Trabaja con Ajax y Data Binding
- Incluye soporte para un impresionante arreglo de tecnolog�as estandar, por
ejemplo, Java Server Faces, EJB3, Java Servlets, JSTL (JSP - Standar Tag Library),
Java API para XML Web Services (JAX-WS), etc
- JSF usa JavaServer Pages (JSP) como la tecnolog�a que permite hacer el despliegue
de las p�ginas, pero tambi�n se puede acomodar a otras tecnolog�as como XUL
(acr�nimo de XML-based User-interface Language, lenguaje basado en XML para la
interfaz de usuario)
- Min 18 aprox. explican como setear una pagina JSP como la p�gina de inicio del
proyecto, sin embargo, el m�todo indicado no funciona.El m�todo conseguido fue,
[Propiedades del proyecto] >> Run >> colocar la p�gina en [Relative URL] (debe
estar seleccionado [Display Browser on Run])
- Ctrl+7 >> abre la ventana Navigator, la cual permite acceder a cada uno de los
componentes de nuestra p�gina web
- A partir del minuto 30 se trata b�sicamente del uso de visual web, lo cual ya no
usado.
- ****** A partir del min 5 aprox. se habla del plugin Visual Web, sin embargo, a
dia de hoy el mismo no existe, fue abandonado su desarrollo *******
- ****** En Tools >> Options >> Miscellaneous debe haber una pesta�a de JSF (Visual
Web) pero no la consigo *******

#################################################
Video 34 (Trabajar con el Editor SQL de NetBeans)
#################################################
- Los componentes JSF son una combinaci�n de etiquetas HTML + JSTL (Java
ServerPages Standard Tag Library) --> amplia las caracter�sticas de la JSP, con
nuevas librer�as de etiquetas (Tags)
- ***** Se contin�a hablando acerca de visual web, de ahi que en lo sucesivo, se
har� menci�n s�lo a algunos puntos que pudieran ser de interes *****
- Event Handlers, dentro del evento, public void
txtNombre_processValueChange(ValueChangeEvent event) se coloc� el siguiente c�digo:
Object viejoObjeto = event.getOldValue();
Object nuevoObjeto = event.getNewValue();

- Si en el c�digo de la p�gina JSP se utiliza System.out.println("xxxx"), esto no


se reflejar� en la pantalla, saldr� por el t�rminal de salida.
- Beans = codigo reusable

- En el min 37:30 comienza la explicaci�n para trabajar con datos:


* Instalaci�n de MySQL: la distribuci�n XAMPP se puede conseguir en la
siguiente p�gina: https://www.apachefriends.org/es/index.html
* En la ventana [Services] >> Databases, debe estar MySql. Si es primera vez
que se ejecuta ent. se debe presionar RMB sobre Databases y seleccionar la opci�n
[Register MySQL Server...]. Se abrir� la ventana propiedades, la cual debe ser
configurada (explicaci�n en el min 41)
* Para usar la DB MySQL se debe tener activa la conexi�n. Para ello presionar
RMB sobre MySQL >> Start
* Al pulsar el signo (+) de MySQL se abriran las bases de datos instaladas
* Una vez conectada, al pulsar RMB sobre MySQL, podemos seleccionar [Create
Database...] si queremos una DB nueva
* En la parte baje de la ventana Servers se pueden ver los nodos de conexi�n
a las DB (empiezan con el prefijo jdbc)
* Al expandir (con doble-click) el nodo de la conecci�n, veo el directorio de
la DB. Seleccionamos la DB creada y la expandimos, alli se pueden observar tres
carpetas, Tablas, Vistas y Procedimientos.
* Al hacer RMB sobre Tablas, podemos seleccionar [Execut Command...] y se nos
abre un editor mediante el cual podemos, por ejemplo, crear tablas, (CREATE TABLE
Prueba...)
* El editor de SQL's tiene una barra de herramientas con diversas opciones al
igual que si presionamos RMB sobre la ventana del editor de SQL's
* RMB en Tablas >> Refresh, actualiza la informaci�n de la DB

- Al final del video se crea una nueva DB, se agregan dos tablas y se le insertan
valores (estas tablas ser�n usadas posteriormente en el curso)

########################################################
Video 35 (Crear Aplicaci�n Web enlazada a base de datos)
########################################################
- Lo priimero es planificar siempre la estructura que tendr� nuestro proyecto
- Para el proyecto de conecci�n a la DB, se usara la API Java Database Connectivity
(JDBC). Para ello se requiere del driver oficial JDBC de MySQL que se llama
'Connector/J' (pagina web: https://dev.mysql.com/downloads/connector/j/)
- Min 8, comienza la construcci�n de la p�gina web sin el uso de Visual Web.
- RMB en el editor de la p�gina jsp >> Format, identa y acomoda el c�digo para que
sea m�s legible.
- Con la paleta (Ctrl+Shift+8) podemos insertar c�digo HTML en la ventana de
edici�n del jsp donde se encuentra el cursor (con dobleclick sobre el componente
deseado).
- Lo anterior se consigue tambien mediante Ctrl+B ***** no me funciono

- La forma m�s eficiente de comunicar el servidor y la DB es mediante la


configuraci�n de una DB Connection pool, que se puede traducir como una conecci�n a
la DB com�n (pool = fondo comun)

- Pasos para implementar nuestra aplicaci�n:


1) Preparar la fuente de datos
2) Crear el recurso JDBC y el Connection Pool para el servidor
3) Indicarle a la aplicaci�n que use esa fuente de datos (se hace creando una
entrada en le archivo web.xml de la aplicaci�n [Deployment Descriptor - DD])
4) Asegurarnos que el JDBC Driver MySQL Connector/J este accesible para el
servidor, de esta manera, el mismo podr� acceder a la DB (a�adir el archivo JAR del
driver de la DB al servidor).

- Paso1:
* Tener una DB (ejemplo: MySQL)
- Paso2:
* Para crear el recurso JDBC y el pool procedemos de la siguiente manera: RMB
en el proy >> New >> Other >> Glassfish >> [JDBC Resource] (min 31:30)
* Durante el procedimiento, se hace uso de la API JNDI (Java Naming and
Directory Interface), la cual provee un modo uniforme para que las aplicaciones
encuentren y accedan a las fuentes de datos (tutorial de JNDI:
http://docs.oracle.com/javase/jndi/tutorial/)
* Hubo varios puntos que cambiaron desde que se elabor� el curso:
> Se crea el archivo 'glassfish-resources.xml' en lugar de sun-
resources.xml
> Dicho archivo es ubicado en 'Configuration Files' (segun el video,
'sun-resources.xml' era ubicado en 'Server Resources')
> Segun el video se crea una entrada en Servers >> Glassfish >>
Resources >> JDBC >> JDBC Resources, esto no ocurri�. Para hacer esto, si se desea
los recursos de manera permanente en elservidor, se deben hacer unos pasos
adicionales (ver https://dzone.com/articles/nb-class-glassfish-mysql-jdbc)
> Segun el video se crea una entrada en Servers >> Glassfish >>
Resources >> JDBC >> Connection Pools, esto no ocurri�. Para hacer esto, si se
desea los recursos de manera permanente en elservidor, se deben hacer unos pasos
adicionales (ver https://dzone.com/articles/nb-class-glassfish-mysql-jdbc)
- Paso3(min37):
* La referencia a la fuente de datos desde la aplicaci�n, se hace colocando
una entrada en el 'Deployment Descriptor - DD' de la aplicaci�n
* Los DD's son archivos de texto basados en xml. Contienen informaci�n
describiendo como se mostrar� una aplicaci�n en un entorno determinado.
* El procedimiento seguido a continuaci�n, es posible si se seleccion� EE5
como Java EE code compliant al momento de crear el proyecto. En EE6 el
procedimiento es distinto
* En 'Configuration Files' hacemos DClick sobre el archivo web.xml,
* References >> Resources References >> Add..., a�adimos el recurso creado
(el video coloca como recurso javax.sql.DataSource, para que funcione se coloc�
javax.sql.ConnectionPoolDataSource - editando el archivo manualmente)
- Paso4:
* Debemos a�adir el archivo JAR del driver de la base de datos al servidor
* En Tools>>Servers>>Glassfish, debe estar habilitada la opci�n 'Enable JDBC
Driver Deployment'
* En Tools>>Servers, vemos 'Domains Folder' y 'Domain', debemos ir a esa
carpeta y seleccionar por �ltimo la carpeta 'lib'. Ahi debe estar ubicado el
archivo JAR del driver (mysql-connector-java-5.1.23-bin.jar)
* De no estar, basta con seleccionar el proyecto >> RMB >> Deploy

- Ahora se implementar c�digo JSTL, el cual habilita a las p�ginas JSP para mostrar
contenido din�minco (min45 - aqui se hace uso de la paleta de componentes)
- A�adir la librer�a JSTL al Classpath del proyecto (por defecto Glassfish ya la
incluye, se puede verificar en: Proyecto>> Libraries >> Glassfish Server, debe
estar jstl-impl.jar
- JSTL: encapsula funcionalidades centrales comunes a muchas aplicaciones JSP en
lugar de mesclar tags de numerosos vendors en tus apps JSP.
- JSTL roporciona cuatro �reas b�sicas de funcionalidad
* Core: Tareas estrucuturales comunes; iteradores, condicionales...
* fmt: Internacionalizaci�n y localizaci�n del formateado de mensajes
* sql: Acceso a bases de datos mediante Simple Query Language
* xml: Manejo de contenido XML

- Un signo igual que coloque al final del <c: set...="/> me gener� un puto error de
mierda!!! java.lang.String...

#####################################################
Video 36 (Introducci�n a los Web Services con JAX-WS)
#####################################################
- JAX-WS: Java API for XML - Based Web Services
- Su funci�n es simplificar las tareas de desarrollo Web-Service usando tecnologias
Java
- La versi�n dos ha mejorado considerablemente, prestando soporte a protocolos como
SOAP 1.1, SOAP 1.2, XML, etc
- JAX-WS usa JAXB 2.0 para enlazar datos y soportar la personalizaci�n de los
servcios que se vayan creando.
- Se realizaran tres Web Service clientes
1. Una clase Java dentro de una applicaci�n Java SE
2. Un Servlet dentro de una applicaci�n Web
3. Una p�gina JSP dentro de una applicaci�n Web

- 1er Paso: Crear el Web Service (min 15:55)


* Elegir el contenedor que vamos a usar (Deployment Container)
> Contenedor Web --> New Project >> Java Web
>> Web Aplication
> Contenedor EJB (Enterprise JavaBeans Technology) --> New Project >>
Java EE >> EJB Module

* Una vez creado el contenedor, seleccionamos el Web Service: --> RMB


sobre el proyecto >> New >> Web Services >> Web Service
> Empezaron los peos, no veo el bot�n design min 19
* Para testear el Web Service, RMB en el priyecto >> Deploy. Posteriormente,
presionamos RMB sobre el Web Service >> Test Web Service
Nota: este procedimiento es posible si el contenedor es un 'Contenedor Web'
y ademas se usa Glassfish. Esta aplicaci�n de testeo es proporcionada por Glassfish
y se integra automaticamente con Netbeans

- 2do Paso: Crear el Web Service Client


* Opci�n 1: Una clase Java dentro de una applicaci�n Java SE (min 25:11)
> Crear aplicaci�n Java (nuevo proyecto)
> Crear clase Java
> Crear cliente Web Service --> RMB sobre el proyecto >> New >> Web
Services >> Web Service Client. En la siguiente ventana, en proiect, seleccionamos
el Web Service realizado previamente.
> Consumir el Web Service --> Arrastramos el cliente Web Service
recientemente creado hasta la clase donde queremos implementarlo
Nota: cuando arrastramos el Web Service, se pega el m�todo no el c�digo como
tal.

* Opci�n 2: Un Servlet dentro de una applicaci�n Web (min 30)


> Crear aplicaci�n Web: --> New Project >> Java
Web >> Web Aplication
> Crear cliente Web Service --> RMB sobre el
proyecto >> New >> Web Services >> Web Service Client. En la siguiente ventana, en
proiect, seleccionamos el Web Service realizado previamente.
> Crear Servlet --> RMB sobre el
proyecto >> New >> Other >> Web >> Servlet.
> Usar Servlet para consumir el Web Service --> RMB sobre el
proyecto >> Properties >> Run, en [Relative URL] colocamos el servlet que acabamos
de crear (ej: /ClienteServlet).
--> Por �ltimo, arrastramos
el cliente Web Service recientemente creado, hasta el m�todo processRequest
Nota: cuando arrastramos el Web Service, se pega el m�todo no el c�digo como
tal.

* Opci�n 3: Una p�gina JSP dentro de una applicaci�n Web (min 36:15)
> Creamos una aplicaci�n Web --> New Project >> Java
Web >> Web Aplication
> Crear cliente Web Service --> RMB sobre el
proyecto >> New >> Web Services >> Web Service Client. En la siguiente ventana, en
proiect, seleccionamos el Web Service realizado previamente.
> Consumir el Web Service --> Arrastramos el
cliente Web Service recientemente creado hasta la p�gina JSP
Nota: funcion� exactamente como en el tutorial

################################################
Video 37 (Crear un Cliente gr�fico para Twitter)
################################################
- Creamos el proyecto --> New Project >> Java >>
Java Aplication
- Creamos un Jform --> RMB sobre el proyecto >>
New >> Other >> Swing GUI Forms >> JFrame Form

- Componentes usados y sus propiedades:


* jButton
> text

* jLabel
> text
> labelFor --> se uso para enlazar con el
TextField (b�sicamente por razones de accesibilidad)
> minimunSize, maximunSize, preferredSize --> se uso para definir el
tama�o del icono de twitter

* jTextField
> text

* jScrollPane
* jList
> RMB >> Propertirs --> Seleccionamos la prop. 'model' >> Ctrl + Space,
abre el editor personalizado
> RMB >> Propertirs --> Seleccionamos la prop. 'cellRenderer' >> Ctrl +
Space, abre el editor personalizado

* jPane
* jTextPane

- Cuando trabajemos con Web Services, en ocaciones puede que necesitemos importar
clases de paquetes que no est�n en import, para hacerlo de manera sencilla,
pulsamos RMB (sobre el c�digo Java) >> Fix Imports, seleccionamos los paquetes
faltantes y presionamos ok

-----------------------------------------------------------------------------------
-----------------
- Clase Timer:
* A facility for threads to schedule tasks for future execution in a background
thread.
* Tasks may be scheduled for one-time execution, or for repeated execution at
regular intervals.
* Corresponding to each Timer object is a single background thread that is used
to execute all of the timer's tasks, sequentially.
* Timer tasks should complete quickly. If a timer task takes excessive time to
complete, it "hogs" the timer's task execution thread.

Ej de uso:
- ...

- Constructor:
- Timer() //Creates a new timer.
- Timer(boolean�isDaemon) //Creates a new timer whose
associated thread may be specified to run as a daemon.
- Timer(String�name) //Creates a new timer whose
associated thread has the specified name.
- Timer(String�name, boolean�isDaemon) //Creates a new timer whose
associated thread has the specified name, and may be specified to run as a daemon.

- M�todos de Timer:
- void scheduleAtFixedRate(TimerTask�task, long�delay, long�period)
//Schedules the specified task for repeated fixed-rate execution, beginning
after the specified delay.

Notas: -Librer�a: import java.util.Timer;


-Hereda de Object

-----------------------------------------------------------------------------------
-----------------
- Clase DefaultListModel:
* This class loosely implements the java.util.Vector API, in that it implements
the 1.1.x version of java.util.Vector, has no collection class support, and
notifies the ListDataListeners when changes occur. Presently it delegates to a
Vector, in a future release it will be a real Collection implementation.

Ej de uso:
- ...

- Constructor:
- ...

- M�todos de DefaultListModel:
- DefaultListModel()
Notas: -Librer�a: import javax.swing.DefaultListModel;
-Hereda de AbstractListModel<E>

-----------------------------------------------------------------------------------
-----------------
- Clase TimerTask:
* A task that can be scheduled for one-time or repeated execution by a Timer.
* implements Runnable

Ej de uso:
- ...

- Constructor:
- protected TimerTask() //Creates a new timer task.

- M�todos de TimerTask:
- boolean cancel() //Cancels this timer task.
- abstract void run() //The action to be performed by
this timer task.
- long scheduledExecutionTime() //Returns the scheduled
execution time of the most recent actual execution of this task.

Notas: -Librer�a: import java.util.TimerTask;


-Hereda de Object

-----------------------------------------------------------------------------------
-----------------
- Clase SwingUtilities:
* A collection of utility methods for Swing.

Ej de uso:
- ...

- Constructor:
- ...

- M�todos de SwingUtilities:
- static void invokeLater(Runnable�doRun) //Causes doRun.run() to
be executed asynchronously on the AWT event dispatching thread.

Notas: -Librer�a: import java.util.SwingUtilities;


-Hereda de Object

-----------------------------------------------------------------------------------
-----------------
- Clase ListCellRenderer:
*

Ej de uso:
- ...

- Constructor:
- ...

- M�todos de ListCellRenderer:
- ...

Notas: -Librer�a: import javax.swing.ListCellRenderer;


-Hereda de
-----------------------------------------------------------------------------------
-----------------
- Clase Component:
*

Ej de uso:
- ...

- Constructor:
- ...

- M�todos de Component:
- ...

Notas: -Librer�a: import java.awt.Component;


-Hereda de

-----------------------------------------------------------------------------------
-----------------

##########################################################
Video 38 (Crear una aplicaci�n para Facebook con NetBeans)
##########################################################
- Netbeans permite crear clientes RESTful en aplicaciones Java, en aplicaciones Web
y en m�dulos NetBeans

- Pasos del proyecto (ser� un cliente RESTful en una aplicaci�n Web)


* Crear el cliente --> New Project >> Java
Web >> Web Aplication
* Registrar el proyecto
* Codificar el JSP
* Ejecuci�n del proyecto

--> New File >> Web Services >> RESTful Java Client

##########################################################
Video 39 (Introducci�n al Spring Web MVC con NetBeans 6.9)
##########################################################

##############################################
Video 40 (Uso de Java FX Composer en NetBeans)
##############################################
setLayout(new FlowLayout());

BorderLayout borde = new BorderLayout();


setLayout(borde);
add("North", barra);
add("Center", scroll);
pack();
setVisible(true);

Buenos d�as Veruska, mi nombre es Alexander Garc�a, soy el amigo de Kenia


(Venezuela). Entiendo que est�n en la b�squeda de un Ingeniero Inform�tico. En mi
caso, egres� con el titulo de Ingeniero Electr�nico, menci�n computaci�n, pero cabe
resaltar que me he desarrollado en el �rea de telefon�a m�vil.

Entiendo que al requerir un Ingeniero Inform�tico, es extensa la cantidad de �reas


en la cual se puede desarrollar, es por ello que te agradecer�a me indicaras si
tienes los requisitos exigidos para el cargo ofrecido. Soy el primero en no querer
dejar mal a Kenia, por lo cual, si no cumplo con los requisitos solicitados, ser�
el primero en decirlo.

Por �ltimo, encontrar�s anexo al presente correo, mi CV

Agradecido de antemano por la atenci�n prestada,

Saludos cordiales,
Alexander Garc�a
Tel.. +34 654 08 35 68

También podría gustarte