PRIMERA CLASE LÍNEAS A INCLUIR EN EL AUTOEXEC.BAT SET CLASSPATH = .;C:\JAVA\LIB

Anuncio
PRIMERA CLASE
LÍNEAS A INCLUIR EN EL AUTOEXEC.BAT
SET CLASSPATH = .;C:\JAVA\LIB
SETHOMDRIVE = C;
SET HOMEPATH = \JAVA
SET JAVA_HOME = C:\JAVA
SET PATH = C:\WINDOWS; C:\WINDOWS\COMMAND; C:\JAVA\BIN
JAVA
Comenzó como un proyecto para desarrollar pequeños electrodomésticos porque creían que era bueno que un
lenguaje funcionase en varios tipos de procesadores. Su empresa creadora es Sun. El primer nombre de Java
fue OAK y fue presentado en 1995. Algunas características son:
• Lenguaje orientado a objetos (se definen los datos del objeto y lo que se puede hacer con él).
• Semicompilado o interpretado
Código fuente (*.java) código intermedio (*.class)
El código intermedio (Byte Codes) está compilado para una máquina virtual (un procesador que no existe).
Este código se tiene que volver a interpretar. Las consecuencias son que un programa de Java funciona en
cualquier plataforma y es relativamente lento.
• El acceso al hardware está bastante restringido, principalmente por razones de seguridad.
• Es distribuido (todas las clases no tiene por qué estar en el mismo sitio)
• Optimizado para el protocolo TCP/IP.
• El compilador es totalmente gratuito. Al kit de desarrollo de Java se le entiende por JDK (Java
Development Kit) siendo un conjunto de herramientas para compilar, depurar y ejecutar programas de
Java.
En Java nos vamos a encontrar con:
• Aplicaciones de consola
• Aplicaciones de ventana
• Applets : programas incrustados en un documento HTML y que se suele ejecutar en Internet.
Concepto de herencia
Un objeto hereda los atributos de un objeto de categoría superior, en este caso, de una clase superior. Una
subclase hereda las variables y los métodos de su clase superior.
Concepto de polimorfismo
Consiste en tener dos o más métodos con el mismo nombre pero que actuarán de manera distinta según donde
1
estén situados o según los parámetros que le ponemos.
Concepto de encapsulado
Consiste en ocultar datos o funciones de un determinado objeto para que no sean accesibles ni modificables
por el resto de objetos de manera que no se pueda alterar el contenido de esos datos de forma errónea.
CUESTIONES LÉXICAS DE JAVA
Para los nombres de variable se pueden utilizar espacios en blanco.
Hace distinción entre mayúsculas y minúsculas.
Los nombres de las clases de las variables o de las funciones sólo pueden empezar por una letra, el signo $ o
el guión bajo.
La longitud de estos nombres es ilimitada.
Los comentarios se pueden hacer de tres maneras: como en C/C++ o usando el comentario de documentación
/** ... */. Mediante la herramienta javadoc nos produce un fichero HTML acerca de lo que estemos usando.
EJEMPLO:
Class ejemplo1 {
Public static void main (String args []) {
System.out.println(Hola mundo. Hoy es lunes);
}
}
TIPOS SIMPLES DE DATOS
• Números enteros:
• Int 2.147.48.648 a 2.147.483.647 (32 bits)
• Byte −128 a 127
• Long 92233720368547755808 a 9223372036854775807 (64 bits)
• Short −32768 a 32767 (16 bits)
• Coma flotante:
• Float 3,4 * 10 −38 a 3,4 * 10 38 (32 bits)
• Double 1,7 * 10 −308 a 1,7 * 10 308 (16 bits)
• Caracteres:
• Char 0 a 255 o una letra entre comillas simples (16 bits)
• Booleanos:
2
• Boolean true o false (1 bit)
LITERALES ESPECIALES
\ xxx número en base octal
\ vxxx número en base hexadecimal
\' comilla simple
\ comillas dobles
\\ barra invertida
\ r retorno de carro
\ n salto de línea
\ f salto de página
\ t tabulación
\ b retroceso de carácter sin borrar el anterior
EJEMPLO:
Int x = 15; // valor en decimal
Int x = 015; // valor en octal
Int x = 0x15; // valor en hexadecimal
ÁMBITO DE UNA VARIABLE
En Java se pueden definir en cualquier parte del código. Para definir una variable se procede de la siguiente
manera:
Tipo nombre [= valor];
Globales: se pueden usar en todos los métodos de la clase.
Locales: se pueden usar solamente en el ámbito en el que han sido definidas.
Parámetros formales: usan los valores de las variables en la función indicada.
MATRICES Y VECTORES
Para definir un vector se procede de la siguiente manera:
Tipo nombre [];
EJEMPLO:
3
Int num [];
Num = new int [25]; // se suele poner int num [] = new int [25] en vez de lo otro.
Para definir una matriz en Java se hace igual que con vectores. Por ejemplo:
Int num [] [] = new int [3] [5];
PALABRAS RESERVADAS EN JAVA
Abstract
Byte
Char
Continue
Double
Final
For
Implements
Int
Native
Private
Return
Super
This
Transient
Volatile
False
Boolean
Case
Class
4
Default
Else
Finally
Goto
Import
Interface
New
Protected
Short
Switch
Throw
Try
While
Null
Break
Catch
Const
Do
Extends
Float
If
Instanceof
Long
Package
Public
Static
5
Synchronized
Throws
Void
True
SEGUNDA CLASE
OPERADORES
Son símbolos utilizados para realizar distintas operaciones. Los tipos de operadores que hay son:
Aritméticos y de bits:
− cambia el signo del operando.
~ nos da el complemento bit a bit de ese elemento.
++ incrementa una unidad.
−− decrementa una unidad.
+ operador de suma.
+ = suma y realiza una asignación.
− operador de resta.
− = resta y realiza una asignación.
* operador de producto.
* = producto y realiza una asignación.
/ división entera.
/ = división y realiza una asignación.
% resto de la división.
% = resto y realiza una asignación.
& AND bit a bit.
& = AND y realiza una asignación.
| OR bit a bit.
6
| = OR y realiza una asignación.
^ XOR bit a bit.
^ = XOR y realiza una asignación.
>> realiza un desplazamiento a la derecha con propagación del bit de signo.
>> = realiza un desplazamiento a la derecha y una asignación.
<< realiza un desplazamiento a la izquierda con propagación del bit de signo.
<< = realiza un desplazamiento a la izquierda y una asignación.
>>> desplazamiento a la derecha rellenando el hueco con ceros.
>>> = desplazamiento rellenando huecos y asignación.
Booleanos: sólo devuelven true o false y sólamente trabajan con datos de tipo boolean.
! negación.
& AND
& = AND y asignación.
| OR
| = OR y asignación.
^ XOR
^ XOR y asignación.
Relacionales: también devuelven true o false usándose para hacer comparaciones.
> mayor que
> = mayor o igual que
< menor que
< = menor o igual que
== igual que
! = distinto que
Lógicos: también devuelven true o false y se usan para realizar expresiones complejas.
&& AND
7
|| OR
! NOT
EJEMPLO:
class Prueba{
public static void main (String args []){
int x = 9;
int y = 5;
int a = ~x;
int b = −x;
int d = x/y;
int e = x%y;
int f = x&y;
int g = x|y;
int h = x^y;
int i = x>>2;
int j = x>>>2;
int k = x<<2;
System.out.println("x:"+x+"\n y" + y+
"\n x en binario:"+Integer.toBinaryString(x)+
"\n y en binario:"+Integer.toBinaryString(y)+
"\n C1 de x:"+Integer.toBinaryString(a)+
"\n cambio de signo de x" + b +
"\n x/y:"+d+
"\n x%y:"+e+
"\n AND bit a bit:"+Integer.toBinaryString(f)+
"\n OR bit a bit:"+Integer.toBinaryString(g)+
8
"\n XOR bit a bit:"+Integer.toBinaryString(h)+
"\n Desp. 2 de bits derecha con bit signo\n\t"+
Integer.toBinaryString(i)+
"\n Desp. 2 bits derecha con relleno \n\t" +
Integer.toBinaryString(j)+
"\n Desp. 2 bits a la izquierda:\n\t"+
Integer.toBinaryString (k));
}
}
SENTENCIAS DE CONTROL
Selección if cuyo formato es:
If(condición){
Código;
}
[else{
código;
}]
switch cuyo formato es:
switch(variable){
case valor 1:
sentencias;
break;
[default:
sentencias];
Repetición for cuyo formato es:
for(incialización;condición;incremento){
9
sentencias;
}
while cuyo formato es:
while(condición){
sentencias;
}
do...while cuyo formato es:
do{
sentencias;
}while(condición);
CLASES
Se puede definir como una entidad o un tipo de dato que contendrá por un lado las variables y por otro lado
los métodos o funciones que queremos. En Java, tenemos las clases estándar (las que vienen con el
compilador) y las clases definidas por el usuario las cuales contendrán las variables y métodos que queramos
incluir. El formato para crear una clase es:
Class nombre_clase [extends clase_madre] [implements interface]{
Tipo variable instancia; // global
Tipo nombre método (parámetros){
Tipo variable método; // local
Sentencias;
}
}
Para crear un objeto de una determinada clase se pone:
Nombre clase nombre objeto = new nombre clase(); // constructor
Un constructor es un tipo especial de método cuyo nombre es igual al de la clase y que se ejecuta cuando
creamos un objeto o una instancia de esa clase.
EJEMPLO:
Class Caja{
10
Double ancho, alto, largo;
}
class Ejem1{
public static void main (String args []){
Caja micaja = new Caja();
Micaja.ancho = 10;
Micaja.alto = 15;
Micaja.largo = 2;
Double volumen = micaja.alto * micaja.ancho * micaja.largo;
System.out.println(Volumn:+volumen);
}
}
VARIABLES REFERENCIA
Se refieren a una variable que ya existe. Van precedidas por &. Si por ejemplo tenemos dos variables a y b de
tipo int cuyos valores son respectivamente 5 y a, cuando a la variable a le demos valor 7 b seguirá valiendo 5.
Si queremos que b valga lo mismo que cuando le demos un valor a la variable a habrá que definir b de la
siguiente manera: int &b = a;
SOBRECARGA PARAMÉTRICA
Consiste en escribir el mismo método con el mismo nombre pero pasándole distintos valores de forma que
depende de los que le pasemos se ejecutará uno u otro. También se pueden pasar un objeto en vez de pasarle
valores.
EJEMPLO:
Class Caja{
Double ancho, alto, largo;
Caja(){
Ancho = 10;
Alto = 10;
Largo = 10;
}
11
Caja (double an, double al, double lar){
Ancho = an;
Alto = al;
Largo = lar;
}
}
EJEMPLO:
Class Test{
Int a, b;
Test(int i, int j){
a = i;
b = j;
}
boolean igual(Test.obj) {
if(a == obj.a && b == obj.b)
return true;
}
else return false;
}
}
class EjObParam{
public static void main(String args []){
Test obj1 = new Test(100,22),
Test obj2 = new Test (−1, −2);
Test obj3 = new Test (100,22);
System.out.println(ob1 == ob2 + obj1.igual(ob2));
12
System.out.println(ob1 == ob3 + ob1.igual(ob3));
}
}
CONTROL DE ACCESO
Public: podrá usarse desde la clase en la que está definida y desde todas las demás.
Private: forzamos a la variable o al método a que sólo se pueda usar en la clase en la que fue definida.
Protected: es similar al private, pero si existe herencia la clase hija sólo podrá usar las public y las protected.
EJEMPLO:
Class Test{
Int a;
Public int b;
Private int c;
Void establecer_c(int i){
c = i;
}
int obtener_c(){
return c;
}
}
class ControlDeAcceso{
public static void main(String args []){
test ob = new Test ();
ob.a = 10;
ob.b = 20;
// ob.c = 30; Esto da error
ob.establecer_c(40);
13
System.out.println(a,b,c: + ob.a + ob.b + ob.obtener_c());
}
}
EJEMPLO DE HERENCIA:
Class A{
Int i, j;
Void mostrar (){
System.out.println(i y j + i + j);
}
class B extends A{
int k;
void mostrar2(){
System.out.println(k: + k);
}
void suma (){
System.out.println(i + j + k: (i + j + k));
}
}
class Herencia{
public static void main(String args []){
A ob1 = new A();
B ob2 = new B();
ob1.i = 10;
ob1.j = 20;
ob1.mostrar ();
ob2.i = 5;
14
ob2.k = 9;
ob2.mostrar();
ob2.mostrar2();
ob2.suma();
}
}
OPERADOR super
Tiene dos utilidades. Se utiliza para llamar al constructor de una superclase (un clase madre) y siempre debe
ser la primera línea del método que lo llame. La segunda utilidad es la de acceder a un miembro de la clase
madre que ha sido ocultado por un miembro de la clase hija.
EJEMPLO:
class Caja{
private double ancho, largo, alto;
Caja(Caja ob){
ancho = ob.ancho;
alto = ob.alto;
largo = ob.largo;
}
Caja(double an, double al, double lar){
ancho = an;
alto = al;
largo = lar;
}
Caja(){
ancho = −1;
alto = −1;
largo = −1;
15
}
Caja(double lon){
ancho = alto = largo = lon;
}
double volumen(){
return ancho * alto * largo;
}
}
class CajaconPeso extends Caja{
double peso;
CajaconPeso(CajaconPeso c){
super (c);
peso = c.peso;
}
CajaconPeso(double an, double al, double lar, double pe){
super(an,al,lar);
peso = pe;
}
CajaconPeso(){
super();
peso = −1;
}
CajaconPeso(double longitud, double pe){
super(longitud);
peso = pe;
}
16
}
class EjemploSuper1{
public static void main(String args []){
CajaconPeso ob1 = new CajaconPeso(10,10,15,34.3);
CajaconPeso ob2 = new CajaconPeso(2,3,4,0.77);
CajaconPeso ob3 = new CajaconPeso();
CajaconPeso ob4 = new CajaconPeso(6,7.3);
CajaconPeso copia = new CajaconPeso(ob1);
double vol;
vol = ob1.volumen();
System.out.println("Vol.ob1="+vol);
System.out.println("peso="+ob1.peso);
vol = ob2.volumen();
System.out.println("Vol.ob2="+vol);
System.out.println("peso="+ob2.peso);
vol = ob3.volumen();
System.out.println("Vol.ob3="+vol);
System.out.println("peso="+ob3.peso);
vol = ob4.volumen();
System.out.println("Vol.ob4="+vol);
System.out.println("peso="+ob4.peso);
vol = copia.volumen();
System.out.println("Vol.copia="+vol);
System.out.println("peso="+copia.peso);
}
}
17
CLASE ABSTRACTA
Se caracteriza porque tiene definido los datos y los métodos de esa clase sin código. Para declarar una clase
abstracta hay que poner abstract delante del nombre de la clase.
EJEMPLO:
abstract class Figura{
double dim1;
double dim2;
abstract double area ();
}
Una clase abstracta no se puede instanciar, es decir, no se pueden hacer copias de esa clase. Sirven para usar
la herencia; siempre se heredan. Cada clase hija de una clase abstracta deberá sobrescribir esos métodos.
OPERADOR final
Su utilidad principal es para evitar la herencia, es decir, para que una clase adquiera características de otra.
EJEMPLO:
final class A {
sentencias;
}
class B extends A { //error
sentencias;
}
La segunda utilidad que posee este operador es para evitar la sobre escritura de métodos.
EJEMPLO:
Class A{
final void f1(){
sentencias;
}
}
18
class B extends A{
void f1() { //error
sentencias;
}
}
MÉTODO main
public static void main(String args [])
public accesible desde cualquier parte.
Static no se puede referenciar desde otras clases.
Void sin valor
String args [] array de objetos de cadenas.
Le podemos pasar parámetros al ejecutarlo. Por ejemplo:
Java eje1 hola adiós
EJEMPLO:
Class Saludo{
public static void main(String args []){
System.out.println(Hola+args[0]);
}
}
CLASES ESTÁNDAR
Básicas (java.lonh). Para poder utilizarlas debemos poner antes de nada
import java.long.*
Number: es una clase abstracta que contiene los tipos numéricos int, long, float, double. Tiene cuatro
métodos:
double doubleValue();
double floatValue();
int intValue();
19
long longValue();
Las clases que cuelgan de Number son Double, Float, Integer y Long. Los métodos de Double y Float son:
boolean equals(object objfl objlo); devuelve true si el objeto que pasamos como parámetro es igual al objeto
al que pertenece.
boolean isInfinite(); devuelve true si ese número es infinito.
static boolean isInfinite(float o double num);
boolean isNan(), devuelve true si el contenido del objeto al que se hace referencia es un no número.
static boolean isNan(double o float num);
string toString(); devuelve el valor de ese número como una cadena de caracteres.
static String toString(float o double num);
Los constructores de Float son:
Float (double num);
Float (float num);
Float (string cadena);
Los constructores de Double son:
Double (double num);
Double (string cad);
EJEMPLO:
Class claseEstandar1{
public static void main(String args []){
Double ob1 = new Double(3.14);
Double ob2 = new Double(341E−2);
System.out.println(ob1 == ob2 + ob2.equals (ob1));
}
}
Los constructores de Integer y Long son:
Integer (int num);
20
Integer (string cad);
Long (long num);
Long (string cadena);
Los métodos comunes son:
boolean equals(object objint objlong); devuelve true si el objeto que pasamos como parámetro es igual al
objeto al que pertenece.
static int parseInt(string cadena[int base]) devuelve la parte entera de una cadena de cadena de caracteres.
static long parseLong(string cadena [int base]);
static String toBinaryString(int o long num); convierte un número en una cadena.
static String toHextString(int o long num); convierte un número a una cadena en hexadecimal.
static String toOctalString(int o long num);
string toString(); devuelve la representación de ese número a una cadena de caracteres.
static Integer valueOf(String cad [base]) hace la conversión en la base que le indiquemos.
static Long valueOf(String cad[base])
TERCERA CLASE
Character: sirve para trabajar con datos de tipo char. El constructor de esta clase es: Character (char objeto);
Los métodos de esta clase son:
static boolean isDefined(char c) devuelve true si el carácter está definido en el código Unicode (65536
caracteres diferentes).
static boolean isDigit(char c) nos indica si el carácter pasado es un dígito.
static boolean isJavaLetter(char c) devuelve true si este caracter se puede utilizar como primer caracter para
un nombre de variable o de método.
static boolean isJavaLetterOrDigit(char c) devuelve true si este carácter se puede utilizar como primer
carácter para un nombre de variable o método o si es un dígito.
static boolean isLetter(char c) devuelve true si ese carácter es una letra.
static boolean isLetterOrDigit(char c) devuelve true si ese carácter es una letra o un número.
static boolean isLowerCase(char c) devuelve true si ese carácter es una letra minúscula.
static boolean isSpace(char c) devuelve true si ese carácter es un espacio.
static boolean isTittleCase(char c) devuelve true si es un carácter de Unicode.
21
static boolean isUpperCase(char c) devuelve true si es mayúscula.
EJEMPLO:
If(Character.isDigit(`c'));
static char toLowerCase (char c) convierte a minúsculas el carácter indicado.
static char toUpperCase(char c) convierte a mayúsculas el carácter indicado.
static char toLittleCase(char c) devuelve el carácter como el más cercano a Unicode.
static char farDigit(int num [,int base]) devuelve el carácter del código Unicode correspondiente a ese
número.
static int digit(char c [,int base]) devuelve el número Unicode correspondiente a ese carácter.
EJEMPLO:
class Caracteres{
public static void main(String args []){
char frase [] = { `a', `bB', `3', `?', ` ' };
for(int i = 0; i<frase.length; i++){
if(Character.isDigit(frase[i])){
System.out.println(frase[i]+es dígito);
}
if(Character.isLetter(frase[i])){
System.out.println(frase[i]+es letra);
}
}
}
}
Boolean: permite trabajar con datos de tipo boolean. Los constructores de esta clase son:
Boolean(boolean valor);
Boolean(string cadena);
Los métodos que posee son:
22
boolean booleanValue (); devuelve un dato de tipo booleano dependiendo del objeto que sea.
boolean equals(Object objeto, boolean) compara dos datos de tipo boolean.
String toString() devuelve una representación en cadena del dato booleano.
Static boolean valueOf(string s) devuelve el valor booleano de la cadena pasada.
Math: contiene métodos y funciones para trabajar en coma flotante y que trabajan sobre geometría y
trigonometría. Tiene dos constantes:
double E que vale aproximadamente 2,72 cuya referencia se hace: Math.E
double PI que vale aproximadamente 3,14 cuya referencia se hace: Math.PI
Los métodos de esta clase son:
static double sin(double ángulo) devuelve el seno del ángulo expresado en grados.
static double cos(double ángulo) devuelve el coseno del ángulo expresado en grados.
static double tan(double ángulo) devuelve la tangente de ángulo expresado en grados.
static double asin(double num) devuelve el arcoseno del número indicado.
static double acos(double num) devuelve el arcocoseno del número indicado.
static double atan(double num) devuelve la arcotangente del número indicado.
static double atan2(double x, double y) devuelve el ángulo cuya tangente vale x partido de y.
static double exp(double num) devuelve el número e elevado al número pasado como parámetro.
static double pow(double x, double y) devuelve el número x elevado a y.
static double sqrt(double num) devuelve la raíz cuadrada del número indicado.
static [int, long, double, float] abs([int, long, double, float] num) devuelve el valor absoluto del número
expresado.
static double ceil(double num) devuelve el número entero inmediatamente superior.
static double floor(double num) devuelve el número entero inmediatamente inferior.
static [int, long, double, float] max([int, long, double, float] x, [in, long, double, float] y) devuelve el mayor
de los dos números.
static [int, long, double, float] min([int, long, double, float] x, [in, long, double, float] y) devuelve el menor
de los dos números.
static [int, long, double, float] round([double, float] num) devuelve el número redondeado.
23
static double IEEERemainder(double dividendo, double divisor) halla la división devolviendo el resto.
static double random() devuelve un valor aleatorio entre 0 y 1.
GESTIÓN DE CADENAS
En Java hay dos clases que se encargan principalmente de esta cuestión. Son la clase String y la clase
StringBuffer. Se diferencian en que con la primera el objeto creado no se puede modificar, cosa que sí se
puede hacer con la segunda. Los constructores de la clase String son:
String cadena = new String();
Char a[] = {`a', `b', `c'};
String cad = new String (a);
String cad2 = new String(cad);
String cad3 = new String(a,0,1);
String cad4 = hola;
String cad5 = new String(hola);
Los métodos de esta clase son:
int length() contiene el número de caracteres de esa cadena.
char charAt(int pos) nos devuelve el caracter de la posición que indiquemos.
void getChars(int in, int fin, char destino[], int destino_inicio) coge los caracteres entre inicio y final y los
copia en el array destino a partir de la posición indicada.
char[] toCharArray() guarda en un array de caracteres el contenido del objeto String.
boolean equals(String cad) devuelve true si el objeto pasado es igual al que le aplico el método.
boolean equalsIgnoreCase(String cad) devuelve true si el objeto pasado es igual al que le aplico el método
ignorando mayúsculas y minúsculas.
boolean regionMatches(boolean ignorar mayúsculas, int inicio, String cad2, int inicio 2, int número
caracteres) compara una zona de una cadena con otra subcadena. Por ejemplo:
String c = Hoy es lunes;
String d = Hoy Lunes,
c.regionMatches(true,7,d,4,5);
boolean startsWith(String cad) devuelve true si el objeto string comienza por el valor que yo le pase.
boolean endsWith(String cad) comprueba si el objeto termina con la cadena que yo le indique.
24
int compareTo(String cad) devuelve un número menor que cero si mi cadena es menor que la otra que yo le
paso; igual que cero si son idénticas y mayor que cero si la cadena cad es mayor a donde yo lo aplico.
Int indexOf(int o char caracter[,inicio]) devuelve un número que es la posición que ocupa un carácter dentro
de ese objeto String. Si se omite inicio empezará desde cero.
int lastIndexOf(int caracter o string cadena [,inicio]) devuelve la última coincidencia con esa cadena de
caracteres.
string substring(int inicio [,int fin]) devuelve un objeto de tipo string desde incio hasta final.
string concat(String cad) hace lo mismo que el operador +.
string replace(char original, char sustituto) devuelve una cadena en la cual sustituyo un caracter por otro.
string trim () copia una cadena en otra pero eliminando los espacios que pudisese haber por el principio o al
final.
string toLowerCase () devuelve el objeto en minúsculas.
string toUpperCase () devuelve el objeto en mayúsculas.
Los constructores de la clase StringBuffer son:
StringBuffer cad = new StringBuffer (por defecto son 16 caracteres)
StringBuffer cad = new StringBuffer (int x) (se le indica la capacidad)
StringBuffer cad = new StringBuffer (String c) (le indicamos la cadena de caracteres)
Sus métodos son:
int length() hace lo mismo que con String.
int capacity () devuelve el espacio reservado en un objeto.
void ensureCapacity(int capacidad) asigna la capacidad del objeto.
void setLength(int longitud) establece la longitud de este objeto.
char charAt(int x) hace lo mismo que con String.
void setCharAt(int pos, char carácter) pone un carácter en la posición indicada.
void getChars(int ini, int fin, char destino[], int destino inicio) hace lo mismo que con String.
StringBuffer append(string cad) añade una cadena, un número o un objeto a la cadena ya existente.
StringBuffer insert(int índice) inserta una cadena, un número o un objeto a partir de la posición indicada con
índice.
StringBuffer reverse() devuelve la cadena al revés.
25
ENTRADA POR CONSOLA
Hay dos métodos dentro de la clase System.in que se ocupan de realizar esta tarea y son los siguientes:
int read() throws IOException lee sólamente un carácter.
final String readLine() lee cadenas enteras.
EJEMPLO:
import java.io.*;
class EjemploRead{
public static void main(String args[]) throws IOException{
char c;
System.out.prinln(Introduzca caracteres. 'q' para salir);
do{
c = (char) System.in.read(); //molde
System.out.println (c);
}while(c!='q');
}
}
EJEMPLO:
import java.io.*;
class EjemploReadLine{
public static void main(String args[]) throws IOException{
DataInputStream dato = new DataInputStream (System.in);
String cad [] = new String [100];
int in;
System.out.printl(Introduzca frases \n `fin' para salir);
for(i = 0; i<100; i++){
cad [i] = dato.readLine();
26
if(cad[i].equals(fin)) break;
}
for(int x = 0; x<i; x++){
System.out.println(cad[x]);
}
}
}
CUARTA CLASE
PAQUETES
Se utilizan para agrupar clases; para importar clases en vez de escribir el código. Para importar la clase se
coloca antes de nada la palabra package. Dentro de un paquete podemos incluir todas las clases que queramos.
A la hora de utilizar este se coloca la palabra import, equivalente al include de C.
EJEMPLO (balance.java):
package MiPaquete;
public class Balance{
public String nombre;
public double bal;
public Balance(String n, double b){
nombre = n;
bal = b;
}
public void verSaldo(){
System.out.println(nombre+: +bal+euros);
}
}
(Cuenta.java)
import MiPaquete.Balance;
27
public class Cuenta{
public static void main(String args[]){
Balance actual [] = new Balance[3];
actual[0] = new Balance(Pepe, 123.23);
actual[1] = new Balance(Luis,31.1);
actual[2] = new Balance(Juan, 300.9);
for(int i = 0; i<3; i++){
actual[i].verSaldo();
}
}
}
Algunos paquetes integrados en el Kit de Desarrollo de Java son:
java.applet contiene clases que se usan con los applets.
java.awt contiene clases para trabajar con componentes GUI (para realizar una interfaz de usuario).
java.io contiene clases para utilizar ficheros.
java.lang contiene clases para trabajar con el propio lenguaje java.
java.net da soporte al protocolo TCP/IP.
java.util contiene clases de diversa utilidad.
GESTIÓN DE EXCEPCIONES
Son unos tipos de objetos utilizados para controlar posibles errores en tiempo de ejecución, no en tiempo de
compilación. El formato para gestionar las excepciones es:
try{
(sentencias que pueden dar error);
}
catch(tipo de excepción nombre){
(sentencias para este error);
}
28
[finally{
(sentencias);
}]
EJEMPLO DE ERROR SIN CONTROL:
class Excepciones1{
public static void main(String args[]){
int d = 0;
int r = 30/d;
System.out.println(La división es:+r);
}
}
EJEMPLO DE ERROR CON CONTROL:
class Excepciones2{
public static void main(String args[]){
int d, r;
try{
d = 0;
r = 42/d;
System.out.println(La división es:+r);
}
catch(ArithmeticException ae){
System.out.println(ERROR AL INTENTAR DIVIDIR POR 0);
}
}
}
EJEMPLO DE TRY ANIDADO:
29
class TryAnidados{
public static void main(String args[]){
try{
int a = args.length;
int b = 42/a;
System.out.println(a=+a);
try{
if(a == 1) a=a/(a−a);
if(a == 2){
int c[] = {1};
c[44] = 3;
}
}
catch(ArrayIndexOutOfBoudsException aio){
System.out.println(ÍNDICE FUERA+aio);
}
}
catch(ArithmeticException ae){
System.out.println(DIVISIÓN POR CERO +ae);
}
}
}
Para lanzar la excepción en vez de capturarla existe la palabra reservada throw. Por ejemplo:
class EjemploThrow{
static void demo(){
try{
30
throw new NullPointerException(demo);
}
catch(NullPointerException npe){
System.out.println(Captura en demo());
throw npe;
}
}
public static void main(String args[]){
try{
demo();
}
catch(NullPointerException npes){
System.out.println(Captura en main());
}
}
}
La sentencia throws la usaremos cuando utilicemos un método que hace referencia a una excepción pero que
no está definida ni capturada dentro de ese método. El formato es:
Tipo nombre método(parámetros) throws lista de excepciones
Las excepciones que más se producen son:
ArithmetciExcepcion errores de tipo aritméticos.
ArrayIndexOutOfBoundsException índice del array fuera de su extensión.
ArrayStoreException cuando se asigna a un elemento de la matriz un tipo incompatible.
ClassCastException al producirse una conversión de tipo no válido.
IllegalArgumentException al pasar un parámetro inválido a una función.
IllegalMonitorStateException al intentar realizar una tarea ilegal.
IllegalThreadStateException al solicitar una operación no compatible con el estado actual de una tarea.
31
NegativeArraySizeException al crear un array con tamaño negativo.
NullPointerException al intentar acceder a un dato nulo.
NumbreFormatException al realizar una conversión inválida de una cadena de texto a número.
SecurityException al intentar violar la seguridad.
CloneNotSupportedException intentar duplicar un objeto que no puede serlo.
IllegalAccessException al acceder a una clase o miembro de una clase que no es accesible.
InstantationException al crear un objeto de una clase abstracta.
InterruptedException al interrumpir una tarea a otra tarea.
QUINTA CLASE
APPLETS
Son aplicaciones de Java que para funcionar necesitan estar incrustadas en un documento HTML. Para
incluirlo se utiliza la etiqueta <APPLET parámetros> </APPLET>. Los parámetros son:
Code = nombre de la clase debe ser igual al nombre de la clase del applet.
Width = número indica el ancho de la zona de acción del applet.
Height = número altura de la zona de acción del applet.
Codebase = directorio se utiliza para especificar el directorio en el cual está la clase que queramos cargar.
Dentro de esta etiqueta nos podemos encontrar con la etiqueta abierta <PARAM> que posee dos parámetros
obligatorios que son:
Name = nombre da un nombre a ese parámetro.
Value = valor
Todos los parámetros pasados a un applet son de tipo String. Para poder ejecutar un applet lo podemos o ver
en el navegador o usar el comando appletviewer pasándole como parámetro el nombre de la página Htm
donde se encuentre el applet.
EJEMPLO:
import java.applet.*;
import java.awt.*;
public class PrimerApplet extends Applet{
public void paint(Graphics g){
32
g.drawString(¡Hola Mundo!, 20, 20);
}
}
Las applets de Java no tienen función main al contrario de cualquier aplicación de Java. La estructura
principal de un applet es:
public void init(){} se ejecuta una vez, cuando lo cargamos y en este método inicializaremos las variables a
utilizar.
public void paint(Graphics g){} se ejecuta cada vez que se debe repintar el applet.
public void stop(){} contendrá las sentencias que se ejecutan cuando el navegador abandona la página.
public void destroy(){} contendrá las sentencias que se ejecutarán cuando se destruya el applet.
public void start(){} contendrá las instrucciones para reiniciar el applet.
Para crear un applet lo primer que hay que hacer es crear un elemento contenedor que contendrá los distintos
componentes del applet. La manera de definir componentes, primero deberemos declarar el que esté más
afuera e iremos añadiendo elementos de dentro a afuera; los componentes definidos se introducen en sus
contenedores y por último los subcontenedores se introducen en el general.
Otros métodos adicionales para trabajar con un applet de Java son:
String getAppletInfo() devuelve una cadena de información del applet.
AudioClip getAudioClip(URL o String nombre) crea un objeto de tipo AudioClip que contiene un fragmento
de sonido.
URL getCodeBase() devuelve la dirección donde se encuentra el applet.
URL getDocumentBase() devuelve la URL donde está el código HTML que llama al applet.
Image getImage(URL o String imagen) crea un objeto de tipo Image y guarda en él la imagen que esté donde
le especifiquemos.
Boolean isActive() devuelve true si el applet está activo o false si no está activo.
void play(URL o String nombre) carga un sonido especificado y si lo encuentra lo reproduce.
void resize(int ancho, int alto) redimensiona el applet.
void resize(Dimension d) redimensiona el applet.
void showStatus(String cad) muestra un mensaje en la barra de estado del navegador.
String getParameter(String p) recoge el valor del parámetro cuyo nombre lo especifiquemos y que será un
parámetro que esté dentro de una etiqueta param.
33
EJEMPLO: String cad = getParameter(valor);
MÉTODOS DE GRÁFICOS SIMPLE
public void drawString(String cad, int x, int y)
public void SetBackground(Color c) color de fondo.
public void setForeground(Color c) color de dibujo.
public Color getForeground () obtiene el color de dibujo.
public Color getBackground() obtiene el color de fondo.
public Color repaint() repinta el applet.
public Color repaint(int izquierda, int superior, int ancho, int alto) repinta el área especificada por los
parámetros.
public Color repaint(long tiempo) repinta el applet cada x tiempo indicándolo en milisegundos.
Public Color repaint(long tiempo, int izquierda, int superior, int ancho, int alto) repinta el área especificada
por los parámetros cada x tiempo.
CLASE COLOR
Los constructores de esta clase son:
Color(int red, int green, int blue) indica la cantidad de rojo, verde y azul variando entre 0 y 255.
Color(int valor_RGB) pasamos un valor hexadecimal correspondiente al número HTML de ese color.
EJEMPLO: 0XFF0000
Los métodos de esta clase son:
int getRed() obtendremos la cantidad de rojo.
int getBlue() obtendremos la cantidad de azul.
int getGreen() obtendremos la cantidad de verde.
int getRGB() obtendremos el color con el formato RGB.
Hay unas caonstantes que especifican colors ya definidos que son black, blue, cyan, darkGray, gray, green,
lightGray, magenta, orange, pink.
EJEMPLO: setForeground(new Color(128,128,128);
EJEMPLO:
import java.awt.*;
34
import java.applet.*;
public class Métodos1 extends Applet{
String cad;
public void init(){
setBackground(Color.cyan);
setForeground(Color.red);
cad = dentro de init();
}
public void start(){
cad+= dentro de start();
}
public void paint(Graphics g){
cad+=dentro de paint();
g.drawString(cod,10,10);
}
}
EJEMPLO DE MARQUESINA:
import java.awt.*;
import java.applet.*;
public class Marquesina extends Applet implements Runnable{
String cad = " TEXTO EN MOVIMIENTO ";
Thread t = null;
public void init(){
setBackground(Color.red);
setForeground(Color.white);
t = new Thread(this);
35
t.start();
t.suspend();
}
public void start(){
t.resume();
}
public void run(){
char c;
for(;;){
try{
repaint();
Thread.sleep(100);
c = cad.charAt(0);
cad = cad.substring(1,cad.length());
cad+=c;
}
catch(InterruptedException ie){}
}
}
public void stop(){
t.suspend();
}
public void destroy(){
if(t!=null){
t.stop();
t = null;
36
}
}
public void paint(Graphics g){
g.drawString(cad,50,30);
}
}
SEXTA CLASE
GESTIÓN DE EVENTOS
Es el mecanismo que posee Java para controlar todas las posibles acciones del usuario. Pueden ser eventos de
ratón o eventos de teclado. Los eventos del ratón son:
boolean mouseDown (Event e, int x, int y) se usa para controlar la pulsación de un botón del ratón.
boolean mouseDrag (Event e, int x, int y) se ejecutará cuando movamos el ratón con un botón pulsado.
boolean mouseEnter (Event e, int x, int y) se ejecuta al entrar en el applet.
boolean mouseExit (Event e, int x, int) se ejecuta al salir de la zona de acción del applet.
boolean mouseMove (Event e, int x, int y) se ejecuta al mover el ratón.
boolean mouseUp (Event e, int x, int y) se ejecuta cuando se suelta el botón del ratón.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class Raton extends Applet{
String cad = ;
int x = 0, y = 0;
public void init(){
setBackground(Color.blue);
}
public boolean mouseDown(Event e, int a, int b){
x = a;
37
y = b;
cad = Botón pulsado;
repaint();
return true;
}
public boolean mouseUp (Event e, int a, int b){
x = a;
y = b;
cad = Botón soltado;
repaint();
return true;
}
public boolean mouseMove(Event e, int a, int b){
showStatus(Posición del ratón:+a+,+b);
return true;
}
public void paint(Graphics g){
g.drawString(cad,x,y);
}
}
Para controlar los eventos de teclado tenemos los siguientes métodos:
boolean keyDown(Event e, int tecla) se ejecuta cuando se pulsa una tecla.
boolean keyUp(Event e, int tecla) se ejecuta si se suelta una tecla.
Dentro de la clase Event hay una serie de constantes: las teclas de función (F1 − F12), PGDOWN, PGUP,
LEFT, RIGHT, DOWN, HOME, END.
EJEMPLO:
import java.awt.*;
38
import java.applet.*;
public class Teclado extends Applet{
String cad = ;
public void init(){
SetBackground(Color.red);
}
public boolean keyDown(Event e, int tecla){
swith(tecla){
case Event.F10:
cad = F10;
break;
case Event.PGUP:
cad =RegPag;
break;
case `b':
cad = Tecla b;
break;
default:
cad = Ni F10, ni RegPag, ni b;
break;
}
repaint();
return true;
}
public void paint(Graphics g){
g.drawString(Tecla:+cad,10,10);
39
}
}
AWT (Abstract Windowing Toolkit)
Juego de herramientas de ventana abstracta. Son un conjunto de clases que utilizaremos para crear ventanas,
applets y demás elementos relacionados con ellas. Las clases definidas dentro de este paquete son:
BorderLayout
Button
Canvas
CardLayout
Checkbox
Checkbox Group
Choice
Color
Container
Component
Dialog
Dimension
List
Event
FileDialog
FlowLayout
FlowLayout
Font
FontMetrics
Frame
Graphics
40
GridBagConstraints
GridBagLayout
GridLayout
Image
Insets
Label
MediaTracker
Menu
MenuBar
MenuComponent
MenuItem
Panel
Point
Polygon
Rectangle
Scrollbar
TextArea
TextField
Toolkit
Window
CONTENEDOR
La estructura de la clase container es la siguiente:
• Component
• TextComponent
• TextArea
• TextField
41
• Scrollbar
• Label
• Container
• window
• Frame
• Dialog
• FileDialog
• Panel
• Applet
• Canvas
La clase Panel crea una ventana sin barra de título, ni menús ni bordes, etc. Podemos dibujar o colocar
componentes. Un panel se puede redimensionar usando resize(). Para añadir un elemento a un panel
utilizaremos:
Nombre_elemento.add();
La clase window es abstracta. Para crear una, usaremos o Frame o Dialog.
CLASE FRAME
Para crear un frame tenemos dos constructores:
Frame() creará uno sin título.
Frame(String título);
Los métodos de esta clase son:
void resize (int ancho, int alto) redimensiona la ventana al tamaño especificado.
void resize (Dimension d)
void show () muestra la ventana.
void hide () si la queremos ocultar.
Dimension size() obtendremos las dimensiones del frame.
void setTitle (String cad) estableceremos el título de la ventana.
void setResizable (boolean b) indicaremos si ese frame se peude redimensionar o no.
EJEMPLO:
import java.awt.*;
42
import java.applet.*
class marco extends Frame{
marco(String título){
super(título);
}
public boolean handleEvent(Event obj){
if(obj.id == Event.WINDOW_DESTROY){
hide();
return true;
}
return super.handleEvent(obj);
}
public void paint (Graphics g){
g.drawString(Ventana hija, 40, 10);
}
}
public class awt1 extends Applet{
marco f;
public void init(){
f = new marco(Ventana creada desde el Applet);
f.show();
f.resize(250,100);
}
public void stop(){
f.hide();
}
43
public void start(){
f.show();
}
public void paint(Graphics g){
g.drawString(El Applet, 10,20);
}
}
SÉPTIMA CLASE
MÉTODOS DE GRÁFICOS SIMPLES II
Van dentro del método paint y están asociados a un objeto de tipo graphics para trabajar con gráficos.
void drawLine(int x1, int y1, int x2, int y2) dibuja una línea.
void drawRect(int x, int y, int ancho, int alto) dibuja un rectángulo sin relleno.
void fillRect(int x, int y, int ancho, int alto) dibuja un rectángulo con relleno.
void drawRoundRect(int x, int y, int ancho, int alto) dibuja un rectángulo hueco con las esquinas redondeadas.
void fillRoundRect(int x, int y, int ancho, int alto) dibuja un rectángulo relleno con las esquinas redondeadas.
void drawOval(int x, int y, int ancho, int alto) dibuja una elipse sin relleno.
void fillOval (int x, int y, int ancho, int alto) dibuja una elipse con relleno.
void drawArc(int x, int y, int ancho, int alto, int áng_ inicio, int ang_ barrido) dibuja un arco.
void drawPolygon(int x[], int y[], int num) dibuja un polígono hueco. El array x contiene todas las
coordenadas x y el array y contiene todas las coordenadas de y. El último parámetro se utiliza para indicar el
número de vértices.
void fillPolygon(int x[], int y[], int num) dibuja un polígono igual que el anterior pero en este caso relleno.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class Gráficos1 extends Applet{
int incremento = 25;
44
int max = 500;
int min = 200;
Dimension d;
public void paint(Graphics g){
d = size();
g.drawLine(0, 0, d.width−1, d.height−1);
g.drawLine(0, d.width−1, d.height−1,0);
}
public boolean mouseUp(Event e, int x, int y){
int ancho = d.width+incremento;
int alto = d.height+incremento;
resize(ancho, alto);
return true;
}
}
CLASE Font
Nos va a permitir establecer una fuente para trabajar con ella. Esta clase tiene tres variables que nos infrman
de la fuente activa:
String name nombre de la fuente.
int size tamaño en pixeles.
int style estilo de la fuente.
El constructor que hay que utilizar es:
Font(String nombre, int estilo, int tamaño);
El nombre puede ser: Dialog, Courier, Arial, TimesRoman, Helvetica.
El estilo puede ser: Font.BOLD, Font.ITALIC, Font.PLAIN;
Los métodos de esta clase son:
String getFamily() nos devuelve la familia a la que pertenece esa fuente.
45
String getName() obtenemos el nombre completo de la fuente.
int getSize() obtenemos el tamaño en puntos de esa fuente.
int getStyle() obtenemos el estilo de esa fuente.
boolean isBold() averiguamos si está en negrita.
boolean isItalic() averiguamos si está en cursiva.
boolean isPlain() averiguamos si es normal.
String toString() devuelve una representación del objeto de tipo Font.
String[] getFontList() devuelve un array de cadenas con los nombres de las fuentes que están disponibles.
EJEMPLO:
impot java.awt.*;
import java.applet.*;
public class Fuentes extends Applet{
public void paint(Graphics g){
Font f = new Font(Courier, Font.BOLD,18);
SetFont(f);
g.drawString(Prueba Courier,10,40);
f = new Font(Helvetica, Font.BOLD|Font.ITALIC,20);
setFont(f);
g.drawString(Prueba Helvética, 10,100);
}
}
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class Fuentes_Disponibles extends Applet{
public void paint(Graphics g){
46
String lista[];
lista = getToolkit().getFontList();
for(int i = 0; i<lista.length; i++){
g.drawString(lista[i],10,10+(i*20));
}
}
}
CLASE FontMetrics
Contiene métodos para obtener el tamaño de un array de caracteres o de un string. Hay que tener en cuenta los
siguientes conceptos:
Adicional: es la separación existente entre líneas.
Línea bas: la línea de la que parten las letras.
Ascenso: distancia que separa la línea base del tope superior de la letra.
Descenso: distancia que separa la línea base del tope inferior de la letra.
Altura: la suma del ascenso y del descenso.
Los métodos de esta clase son:
int charWidth(char c[],int inicio, int num_car) obtengo el ancho en pixeles de un array de caracteres a partir
de inicio indicando cuantos caracteres se cogen.
int charWidth(char c) obtengo el ancho en pixeles de un sólo carácter.
int getAscent() obtendremos el ascenso de la fuente.
int getDescent() obtendremos el descenso de la fuente.
int getHeight() obtendremos la altura de la fuente.
int getLeading() obtendremos el adicional.
int getMaxAdvance() obtendremos el ancho en pixeles de la letra más ancha.
int getMaxAscent() obtendremos el máximo ascenso.
int getMaxDescent() obtendremos el máxima descenso.
Int stringWidth(String cad) obtenemos el ancho en pixeles de un objeto de tipo String.
47
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class CentrarTexto extends Applet{
Font f = new Font(Helvetica, Font.BOLD,18);
public void paint (Graphics g){
Dimension d;
g.setColor(Color.white);
g.fillRect(0, 0, d.width, d.height);
g.setColor(Color.black);
g.setFont(f);
centrar(Esto está cemtrado, d.width, d.height, g);
g.drawRect(0, 0, d.width, d.height);
}
public void centrar(String cad, int ancho, int alto, Graphics g){
FontMetrics fm = g.getFontMetrics();
int x = (ancho − fm.stringWidth(cad))/2;
int y = 50; // Aquí calcularemos el alto
g.drawString(cad, x, y);
}
}
OCTAVA CLASE
AWT (COMPONENTES Y CONTROLES)
Para añadir un complemento se utiliza el método add(). Cuando queramos añadir un componente al
contenedor lo indicaremos así: contenedor.add(componente). Para eliminar un complemento de la aplicación
tenemos:
remove(componente) quita uno en concreto.
48
RemoveAll() quita todos los componentes.
Para controlar los eventos de los componentes se utiliza:
public boolean action (Event e, Object ob)
Este objeto tiene una seire de variables con las que vamos a trabajar:
int clickCount contiene el número de veces que se ha pulsado el botón.
int id contiene la identificación de lo que ha ocurrido.
int key contiene la tecla que se ha pulsado.
int modifiers contiene el estado de las teclas mayúsculas, control y alt.
long when contiene el instante en el que se produjo el evento.
int x, y contiene las coordenadas del ratón cuando se produjo el evento.
Las constantes de este evento son:
ACTION_EVENT pregunta si se ha generado un evento.
GET_FOCUS cuando una ventana ha cogido el foco.
KEY_ACTION cuando se ha pulsado una tecla especial.
KEY_ACTION_RELEASE si se ha pulsado esa tecla.
KEY_PRESS si se ha pulsado una tecla.
KEY_RELEASE si se ha soltado esa tecla.
LIST_DESELECT si se ha deseleccionado un elemento de una lista.
LIST_SELECT si se ha seleccionado un elemento de la lista.
LOAD_FILE si se está cargando un fichero.
LOST_FOCUS si se ha perdido el foco.
MOUSE_DOWN si se pulsó un botón del ratón.
MOUSE_DRAG si se está moviendo el ratón con un botón pulsado.
MOUSE_ENTER identifica que el ratón ha entrado en la ventana.
MOUSE_EXIT identifica que el ratón ha salido de la ventana.
MOUSE_MOVE identifica si se ha movido el ratón.
49
MOUSE_UP si se ha soltado el botón del ratón.
SAVE_FILE si se está grabando un fichero.
SCROLL_ABSOLUTE comprueba si ha habido un desplazamiento en una barra de desplazamiento de un
applet nuestro.
SCROLL_LINE_UP controla si se ha producido el evento de pinchar en el botón de subir de una barra de
desplazamiento.
SCROLL_LINE_DOWN controla si se ha producido el evento de pinchar en el botón de bajar de una barra de
desplazamiento.
SCROLL_PAGE_UP controla si se ha producido un avance de página.
SCROLL_PAGE_DOWN controla si se ha producido un retroceso de página.
WINDOW_DEICONIFY pregunta si una ventana ha sido restaurada.
WINDOW_DESTROY pregunta si una ventana ha sido cerrada.
WINDOW_EXPOSE pregunta si se acaba de visualizar una ventana.
WINDOW_ICONIFY pregunta si se ha minimizado una ventana.
WINDOW_MOVED pregunta si se ha movido esa ventana
ALT_MASK comprueba si pulsamos ALT a la vez que hacemos algo.
CTRL_MASK comprueba si pulsamos CONTROL a la vez que hacemos algo.
SHIFT_MASK comprueba si pulsamos SHIFT a la vez que hacemos algo.
CLAS Label
Es un texto que se puede incorporar a nuestra ventana pero con el que no podemos hacer nada. Tenemos dos
constructores:
Label etiqueta = new Label() crea una etiqueta vacía.
Label etiqueta = new Label (String cad) crea una etiqueta con un texto alineado a la izquierda.
Label etiqueta = new Label(String cad, int pos) crea una etiqueta con texto indicando la posición que puede
ser Label.LEFT, Label.RIGHT, Label.CENTER
Esta clase tiene dos métodos:
void setText(String cad) establece el texto de la etiqueta.
String getText() recoge el texto de la etiqueta.
EJEMPLO:
50
import java.awt.*;
import java.applet.*;
public class etiquetas extends Applet{
Label et1,et2,et3;
public void init(){
Label et1 = new Label(Texto 1);
Label et2 = new Label(Dos);
Label et3 = new Label(Tres);
add(et1);
add(et2);
add(et3);
}
}
CLASE Button
Los constructores de esta clase son:
Button botón = new Button() crea un botón sin texto.
Button botón = new Button(String cad) crea un botón con texto.
Los métodos de esta clase son:
void setLabel(String cad) establece el texto del botón.
String getLabel() obtiene el texto del botón.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class Botones extends Applet{
String cad = ;
public void init(){
51
Button b1 = new Button(Sí);
Button b2 = new Button(No);
add(b1);
add(b2);
}
public boolean action (Event e, Object o){
if(e.target instanceof Button){
if(o.equals(Sí)){
cad = Ha pulsado sí;
}
if(o.equals(No)){
cad = Ha pulsado No);
}
repaint();
return true;
}
return false;
}
public void paint(Graphics g){
g.drawString(cad,6,100);
}
}
CLASE Checkbox
Hay tres constructores:
Checkbox() crea una casilla de verificación sin texto.
Checkbox(String cad, CheckboxGroup g, boolean marcado) crea una casilla de verificación que estará
incluida dentro de un grupo.
52
Los métodos que tiene esta clase son:
boolean getState() devuelve el valor de la casilla.
void setState(boolean m) establece el estado de la casilla.
String getLabel() obtengo el texto de la casilla.
void setLabel(String cad) establezco el texto de la casilla.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class Check extends Applet{
String cad = ;
Checkbox ch1,ch2,ch3;
public void init(){
ch1 = new Checkbox(Win 95);
ch2 = new Checkbox(Solaris);
ch3 = new Checkbox(WinNT);
add(ch1);
add(ch2);
add(ch3);
}
public boolean action (Event e, Object o){
if(e.target instanceof Checkbox){
repaint();
return true;
}
return false;
}
53
public void paint(Graphics g){
cad = Estado actual;
g.drawString(cad,6,80);
cad = Win 95 = +cad.getState();
g.drawString(cad,6,100);
cad = Solaris = +cad.getState();
g.drawString(cad,6,120);
cad = WinNT = +cad.getState();
g.drawString(cad,6,140);
}
}
CLASE CheckboxGroup
Crea un grupo de casillas de verificación de las cuales sólo una puede estar marcada. Para añadir casillas se
utiliza el tercer constructor de la clase Checkbox. El constructor es: Checkbox(). Los métodos que tiene esta
clase son:
Checkbox getCurrent() devuelve el objeto Checkbox seleccionado.
void setCurrent(Checkbox objeto) establece el elemento seleccionado.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class Check2 extends Applet {
String cad = ;
Checkbox ch1, ch2, ch3;
CheckboxGroup chg;
public void init(){
chg = new checkboxGroup();
ch1 = new Checkbox(win 98, chg, true);
54
ch2 = new Checkbox(MacOs, chg, false);
ch3 = new Checkbox(linux,chg, false);
add(ch1);
add(ch2);
add(ch3);
}
public boolean action (Event e, Object o){
if(e.target instanceof Checkbox){
repaint();
return true;
}
return false;
}
public void paint (Graphics g){
cad = Selección actual: ;
cad+= chg.getCurrent().getLabel();
g.drawString(cad,6,100);
}
}
CLASE Choice
Sirve para crear una lista desplegable con elementos de los dos sólo se va a poder seleccionar uno. El
constructor es: Choice()
Los métodos que tiene son:
void addItem(String elemento) añade elementos haciéndolo por el final.
String getSelectedItem() devuelve una cadena con la opción seleccionada.
int getSelectedIndex() devuelve la posición del elemento.
int countItems() devuelve el número de elementos de la lista.
55
void select(int posición) selecciona el elemento indicado.
void select(String elemento) selecciona el elemento cuya cadena sea la indicada.
String getItem(int posición) devuelve una cadena con el texto que tenga el elemento de la posición indicada.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class Listas extends Applet{
Choice a, b;
Sring cad = ;
public void init(){
a = new Choice();
b = new Choice();
a.addItem(Win 98);
a.addItem(WinNT);
b.addItem(Internet Explorer);
b.addItem(Netscape Navigator);
add(a);
add(b);
}
public boolean action(Event e, Object o)
íf(e.target instanceof Choice){
repaint();
return true;
}
return false;
}
56
public void paint(Graphics g){
cad = S. Operativo: +a.getSelectedItem();
g.drawString(cad,6,100);
cad = Navegador: +b.getSelectedItem();
g.drawString(cad,6,120);
}
}
NOVENA CLASE
CLASE List
Los constructores son:
List()
List(int filas, boolean selección múltiple)
Los métodos son:
void addItem(String elemento,[int posición]) añade elementos con la posibilidad de indicarle en qué posición.
String getSelectedItem() devuelve el elemento seleccionado.
int getSelectedIndex() devuelve el índice del elemento seleccionado.
String[] getSelectedItems() devuelve un array con el nombre de los elementos seleccionados.
int[] getSelectedIndexes() devuelve un array con las posiciones de los elementos seleccionados.
int counItems() devuelve el número de elementos.
void select(int posición) selecciona el elemento indicado.
String getItem(int posición) obtengo el nombre del elemento indicado.
CLASE Scrollbar
Crea una barra de desplazamiento horizontal o vertical para el uso que le indiquemos en nuestro programa.
Tiene tres constructores:
Scrollbar() crea una barra vertical.
Scrollbar(int estilo) crea una barra con un determinado estilo.
Scrollbar(int estilo, int valor inicial, int tamaño, int mínimo, int máximo) crea una barra de desplazamiento
57
con el estilo especificado con el valor inicial que yo indico.
Los métodos de esta clase son:
void setValues (int valor inicial, int tamaño, int mínimo, int máximo) establece el valor inicial, el tamaño del
indicador de posición y los valores máximo y mínimo.
int getValue() obtenemos el valor actual de la barra de desplazamiento.
void setValue(int valor) establece el valor de la barra de desplazamiento.
int getMinimun() obtenemos el valor mínimo.
int getMaximun() obtenemos el valor máximo.
void setLineIncrement(int valor) establece las unidades en las que aumentará o disminuirá el valor de la barra
de desplazamiento.
void setPageIncrement(int valor) establece cuánto tiene que indicar el valor de la barra de desplazamiento
cuando se pincha fuera del indicador.
CLASE TextField
Crea una caja de texto de una sóla línea. Los constructores de esta clase son los siguientes:
TextField()
TextField(int num) crea una caja de texto del ancho de caracteres indicado.
TextField(String cad)
TextField(int num, String cad)
Los métodos que tiene son:
String getText() devuelve el texto.
void setText(String cad) establece un texto.
String getSelectedText() devuelve el texto seleccionado.
void select(int inicio, int fin) maraca los caracteres especificados entre inicio y fin.
boolean isEditable() valdrá true si el texto se puede modificar. False si no se puede modificar.
void setEchoCharacter(char c) establece un carácter de eco en el campo de texto.
boolean echoCharIsSet() valdrá true si he establecido un carácter de eco. False si no lo he establecido.
char getEchoChar() obtengo el caracter de eco.
EJEMPLO:
58
import java.awt.*;
import java.applet.*;
public class Contrasenya extends Applet{
TextField t1, t2;
public void init(){
Label l1 = new Label("Nombre: ",Label.RIGHT);
Label l2 = new Label("Password: ",Label.RIGHT);
t1 = new TextField(12);
t2 = new TextField(8);
t2.setEchoCharacter('*');
setLayout(new GridLayout(2,2));
add(l1);
add(t1);
add(l2);
add(t2);
}
public boolean action(Event e, Object o){
if(e.target instanceof TextField){
repaint();
return true;
}
return false;
}
public void paint(Graphics g){
g.drawString("Nombre: "+t1.getText(),6,60);
g.drawString("Password: "+t2.getText(),6,80);
59
}
}
CLASE TextArea
Los constructores son:
TextArea()
TextArea(int filas, int columnas)
TextArea(String cad)
TextArea(String cad, int filas, int columnas)
Los métodos son los mismos que los de la clase TextField salvo los relativos al carácter de eco. A estos
métodos hay que unir tres más:
void appendText(String cad) añade una cadena de texto al final.
void insertText(String cad, int posición) inserta texto a partir de la posición indicada.
void replaceText(String cad, int inicio, int fin) sustituye el texto entre inicio y fin por la cadena indicada.
GESTORES DE ORGANIZACIÓN (LAYOUTS)
Son los componentes de java para colocar y organizar los componentes gráficos en una ventana. Para poder
utilizar estos gestores hay un métodos: void setLayout(Layout) pasándole como parámetro el gestor de que
queramos. Hay cuatro gestores:
FlowLayout: gestor de organización por defecto de java. Coloca los componentes de izquierda a derecha y de
arriba a abajo. Los constructores que tiene son:
new FlowLayout() deja una separación de 5 pixeles entre los componentes.
new FlowLayout(int modo) pudiendo ser el modo LEFT, RIGHT o CENTER.
new FlowLayout(int modo, int horizontal, int vertical) deja una separación vertical y horizontal especificada.
BorderLayout: coge la ventana de la aplicación dividiéndola en cinco partes − North, South, West, East,
Center − Para poner la parte indicada se utiliza add(North, componente). Los constructores son:
new BorderLayout()
new BorderLayout(int modo, int horizontal, in vertical) el modo puede ser LEFT, RIGHT o CENTER y la
separación es entre componentes de una misma zona.
GridLayout: coloca los elementos en forma de rejilla. Los dos constructores son:
new GridLayout(int filas, int columnas) crea una rejilla de las filas y columnas especificadas.
60
new GridLayout(int filas, int columnas, int vertical, int horizontal)
CardLayout: gestiona los elementos como si fuesen distintas pestañas de tal modo que cuando vemos una se
ocultan las demás. Los constructores son:
CardLayout()
CardLayout(int horizontal, int vertical)
Los métodos son:
void first() activa la primera tarjeta.
void last() activa la última tarjeta.
void next() activa la siguiente tarjeta.
void previous() activa la anterior a la actual.
void show(Component c, String cad) activa la ventana cuyo nombre sea el especificado por la cadena String.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class Tarjetas extends Applet{
Checkbox ch1, ch2, ch3, ch4;
Panel p1;
CardLayout card;
public void init(){
Button win = new Button("Windows");
Button otros = new Button("Otros");
add(win);
add(otros);
card = new CardLayout();
p1 = new Panel();
p1.setLayout(card);
ch1 = new Checkbox("Win 95", null, true);
61
ch2 = new Checkbox("Win NT");
ch3 = new Checkbox("Solaris");
ch4 = new Checkbox("MAcOs");
Panel p2 = new Panel();
p2.add(ch1);
p2.add(ch2);
Panel p3 = new Panel();
p3.add(ch3);
p3.add(ch4);
p1.add("Windows",p2); //añado p2 a p1
p1.add("Otros",p3);
add(p1);
}
public boolean mouseDown(Event e,int x, int y){
card.next(p1);
return true;
}
public boolean action(Event e, Object o){
if(e.target instanceof Button){
if(o.equals("Windows")) card.show(p1,"Windows");
else if(o.equals("Otros")) card.show(p1,"Otros");
return true;
}
return false;
}
}
62
DÉCIMA CLASE
IMÁGENES EN JAVA
Se utiliza la clase Image y sólo soporta los formatos GIF y JPG. Al trabajar con imágenes podemos crear una,
cargarla o variar la presentación de la misma. Para crear una imagen tenemos un método de la clase Applet:
Image createImage(int ancho, int alto)
No tiene constructor especificado. Para ello declararemos un objeto de la clase Image. Por ejemplo:
Image foto;
Foto = createImage(200,200);
Para cargar una imagen tenemos dos métodos:
Image getImage(URL dir);
Image getImage(URL ruta, String nombre);
EJEMPLO:
Image foto1, foto2;
foto1 = getImage(new URL(http://www.miweb.es/fotos/paisaje.jpg));
foto2 = getImage(new URL(http://www.miweb.com/fotos paisaje.jpg));
Para cargar una imagen del mismo directorio se procede de la siguiente manera:
foto1 = getImage(getDocumentBase(),paisaje.jpg);
Obtenemos una URL con la ruta de la web que llama al applet. Para mostrar la imagen usaremos el método:
boolean drawImage(Image ob_imagen, int izquierda, int superior, Component c) pertenece a la clase
Graphics por lo que se pone dentro del método paint. Muestra la imagen especificado por ob_imagen y la
esquina superior izquierda de la imagen se visualiza según lo indicado por izquierda y superior. El último
parámetro sirve para indicar en qué componente se va a dibujar. Se suele poner this.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class EjImagen extends Applet{
publci void init(){
im = getImage(getDocumentBase(),foto.jpg);
63
}
public void paint(Graphics g){
g.drawImage(im,0,0,this);
}
}
Doble búffer
Es una técnica de programación que consiste en crear una imagen en memoria en la que podremos dibujar y
que será mostrada en pantalla cuando nosotros queramos consiguiendo eliminar el parpadeo que se produce al
repintar el applet. Necesitaremos crear un objeto de la clase Image y a partir de éste crearemos un objeto de la
clase Graphics que usaremos para poder dibujar en esa imagen.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class DobleBuffer extends Applet implements Runnable{
Thread hilo;
int xpos;
Graphics bufferG;
Image bufferImg;
public void init(){
bufferImg = createImage(this.getSize().width,this.getSize().height);
bufferG = bufferImg.getGraphics(); //Obtengo el objeto Graphics
}
public void start(){
if(hilo==null){
hilo = new Thread(this);//Applet actual
hilo.start();
}
}
64
public void stop(){
if(hilo!=null){
hilo.stop();
hilo=null;//destruye el hilo
}
}
public void run(){
while(true){
for(xpos=5;xpos<=105;xpos+=4){
repaint();
try{
Thread.sleep(100);
}
catch(InterruptedException ie){
}
}
xpos=5;
}
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
bufferG.setColor(Color.blue);
bufferG.fillRect(0,0,200,100);
bufferG.setColor(Color.red);
65
bufferG.fillOval(xpos,5,90,90);
g.drawImage(bufferImg,0,0,this);
g.setColor(Color.black);
g.fillRect(0,100,200,100);
g.setColor(Color.yellow);
g.fillOval(xpos,105,90,90);
}
}
¿CÓMO ABRIR UNA PÁGINA WEB EN EL NAVEGADOR DESDE JAVA?
Para ello se utilizan dos métodos:
getAppletContext() nos permite acceder al entorno en que se está ejecutando nuestro applet. Una vez accedido
al entorno utilizaremos el siguiente método.
showDocumetn(URL dir, String destino)
showStatus(String cad) muestra un mensaje en la barra de estado del navegador.
EJEMPLO:
URL direccion = new URL(getDocumentBase(),página.html);
GetAppletContext().showDocument(direccion,marco2);
CLASE AudioClip
Se utiliza para reproducir archivos de sonido. Hasta la versión 1.2 del JDK sólo soportaba el formato au. A
partir de la versión 1.2 los formatos pueden ser mid, rmf, wav, aif.
EJEMPLO:
import java.awt.*;
import java.applet.*;
public class Sonido extends Applet{
Button b1,b2,b3;
AudioClip son;
public void init(){
66
b1 = new Button("Play");
b2 = new Button("Stop");
b3 = new Button("Loop");
son = getAudioClip(getDocumentBase(),"sonido.au");
setLayout(new FlowLayout());
this.add(b1);
this.add(b2);
this.add(b3);
}
public boolean handleEvent(Event e){
if(e.target==b1) son.play();
if(e.target==b2) son.stop();
if(e.target==b3) son.loop();
return true;
}
}
67
Descargar