Curso Videotutorial de Java
Curso Videotutorial de Java
########################################
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.)
#####################################################
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)
- 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�
- 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){
-----------------------------------------------------------
##################################################
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).
#################################
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)
- 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.
* String Test = new String("Prueba"); --> Esta es otra forma del m�todo
expl�cito!???
- 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.
#######################
Video 7 (Condicionales)
#######################
-----------------------------------------------------------------------------------
-----------------
- Operador IF:
if (condicion1) {
// Sentencias
}
else if (condicion2) {
// Sentencias
}
else {
// Sentencias
}
switch (variable) {
Case 'A':
//Sentencias;
break;
Case 'B':
//Sentencias;
break;
default:
//Sentencias;
}
ej:
mensaje = (numero==357) ? "357" : "default";
-----------------------------------------------------------------------------------
-----------------
- 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
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:
- 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)
- 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);
- 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
- Clase GregorianCalendar:
Ej:
import java.util.GregorianCalendar;
GregorianCalendar now = new GregorianCalendar();
now.get(Calendar.MINUTE) -->
--> 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
- 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
- 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;
-----------------------------------------------------------------------------------
-----------------
|- 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
-----------------------------------------------------------------------------------
-----------------
- 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
###############################################
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)
#############################################
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) {...
########################################################
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
- 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
}
#######################################################################
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)
- 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
-----------------------------------------------------------------
--------------------------
################################
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
- 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
- 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
- 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.
- 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.
- 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);
- 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
-----------------------------------------------------------------------------------
-----------------
- 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)
-----------------------------------------------------------------------------------
-----------------
- 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
-----------------------------------------------------------------------------------
-----------------
- 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
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)
- 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
-----------------------------------------------------------------------------------
-----------------
- 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
-----------------------------------------------------------------------------------
-----------------
- 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
-----------------------------------------------------------------------------------
-----------------
- 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
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
-----------------------------------------------------------------------------------
-----------------
#######################################################################
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
-----------------------------------------------------------------------------------
-----------------
- 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
-----------------------------------------------------------------------------------
-----------------
- 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
-----------------------------------------------------------------------------------
-----------------
- 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
-----------------------------------------------------------------------------------
-----------------
- 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:
* ...
-----------------------------------------------------------------------------------
-----------------
- 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()]
...
-----------------------------------------------------------------------------------
-----------------
* 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
M�todos:
getKeyChar(); //devuelve el caracter de la tecla
presionada, de no existir, se devuelve KeyEvent.CHAR_UNDEFINED
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
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
* TextListener: ???
- 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
Nota: se implementan igual que una clase, mediante el uso de la palabra reservada
'extends'
#########################################################
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
initComponents();???
* 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.
########################################
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:
####################################################
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
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()????????
-----------------------------------------------------------------------------------
-----------------
- 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.
-----------------------------------------------------------------------------------
-----------------
- 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:
* ...
-----------------------------------------------------------------------------------
-----------------
- 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);
- 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????
#########################################################
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).
- 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.
-----------------------------------------------------------------------------------
-----------------
- 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()
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()
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()
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()
##################################################
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);
-----------------------------------------------------------------------------------
-----------------
- 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.
-----------------------------------------------------------------------------------
-----------------
- 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();
-----------------------------------------------------------------------------------
-----------------
- 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();
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)
- 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();
-----------------------------------------------------------------------------------
-----------------
- 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
-----------------------------------------------------------------------------------
-----------------
- 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();
-----------------------------------------------------------------------------------
-----------------
- 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
####################################################
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)
- 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
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.
-----------------------------------------------------------------------------------
-----------------
- 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.
-----------------------------------------------------------------------------------
-----------------
- 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();
##################################################################
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)
################################################
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();
- 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
- 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
* 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
* 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.
-----------------------------------------------------------------------------------
-----------------
- 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.
-----------------------------------------------------------------------------------
-----------------
- 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.
-----------------------------------------------------------------------------------
-----------------
- Clase ListCellRenderer:
*
Ej de uso:
- ...
- Constructor:
- ...
- M�todos de ListCellRenderer:
- ...
Ej de uso:
- ...
- Constructor:
- ...
- M�todos de Component:
- ...
-----------------------------------------------------------------------------------
-----------------
##########################################################
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
--> 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());
Saludos cordiales,
Alexander Garc�a
Tel.. +34 654 08 35 68