Documente Academic
Documente Profesional
Documente Cultură
DE CIENCIAS E INGENIERIA
PROGRAMACIÓN JAVA
HUANCAYO – PERU
2006
CAPÍTULO I
PROGRAMACIÓN ORIENTADA A OBJETOS
1.1 INTRODUCCIÓN.
Esta ecuación se interpreta como que los algoritmos y los datos se tratan por
separado. De esta forma las funciones o procedimientos que tratan estos datos
los van procesando y pasando de unos a otros hasta obtener el resultado
deseado. Pero cuando se lanzó la programación orientada a objetos (POO),
revolucionó la historia de la programación; se introdujeron al lenguaje diario de
los profesionales del área de computación e informática, conceptos tales como
abstracción, encapsulamiento, herencia y polimorfismo; que hicieron que el
modo de pensar y concebir el desarrollo de sistemas informáticos, fuera muy
diferente a lo que había sido hasta ese momento con la programación
estructurada.
1.2 CLASES.
1.3 OBJETOS.
Definido lo que es una clase y un objeto, ahora podemos definir las cuatro
características principales de la POO que son necesarias para denominarse
como tal.
1.4 ABSTRACCIÓN.
1.5 ENCAPSULAMIENTO.
1.6 HERENCIA.
Una clase se puede dividir en subclases. Las subclases pueden heredar código
y datos de su clase base añadiendo su propio código y datos a la misma.
La herencia impone una relación jerárquica entre clases, en la cual una clase
hija hereda de su clase padre. Si una clase sólo puede recibir características de
otra clase base, la herencia se denomina herencia simple.
1.7 POLIMORFISMO.
Java está fundamentado en C++. Esto quiere decir que mucha de la sintaxis y
diseño orientado a objetos se tomó de este lenguaje. Por lo tanto, a los
programadores que estén familiarizados con C++ y la POO les será muy fácil
aprender a desarrollar aplicaciones con Java. Pero e advierte a los
programadores de C++ que en Java no existen punteros ni aritmética de
punteros, las cadenas de caracteres son objetos y la administración de memoria
es automática, lo que elimina la problemática que presenta C++ con las lagunas
de memoria al olvidar liberar bloques de memoria que fueron asignados
dinámicamente.
Java es un lenguaje y por lo tanto puede hacer todas las cosas que puede
hacer un lenguaje de programación: cálculos matemáticos, procesa cadenas,
bases de datos, aplicaciones gráficas, animaciones, sonido, etc..
Si lo que nos interesa son las páginas de Web, ya no tienen que ser estáticas,
se le puede poner toda clase de elementos multimedia y permiten un alto nivel
de interactividad.
Pero en Java no todo es maravilloso, pues, también tiene sus desventajas. Una
desventaja es que los programas hechos en java tienden a ser lentos, debido a
que son programas interpretados y nunca alcanzan la velocidad de un
El programa anterior se puede realizar en algún software java como puede ser
el Jcreator, JBuilder, etc.; con los cuales en el momento de compilar se crea los
archivos Bienvenida.java y Bienvenida.class
2.4 IDENTIFICADORES.
Una variable es un nombre que se asocia con una porción de la memoria del
ordenador, en la que se guarda el valor asignado a dicha variable. En Java
todas las variables se deben declarar antes de usarlas, para declarar un variable
se usa una de las siguientes sintaxis.
tipo identificador1,identificador2,identificador3;
tipo identificador1=valor1,identificador2=valor2;
class TiposPrimitivos{
public static void main (String args[]){
byte e1,e2; //variable que almacena un número tipo byte
short e3,e4; //variable que almacena un número tipo short
int e5=301028,e6=45; //variable que almacena un número entero
long e7,e8; //variable que almacena un número tipo long
float f1=13.4f; //variables que almacena un número tipo float
double f2; //variables que almacena un número tipo double
char c1; // variable para almacenar un caracter
String cad1; // variable para almacenar una cadena
e1=-43;
e2=127;
e3=-1248;
e4=30654;
e7=3456656;
e8=-352624;
f2=3.4567e15;
c1='U';
cad1="Universidad Continental siempre primero";
System.out.println("e1 = "+e1+" e2= "+e2);
System.out.println("e3 = "+e3+" e4= "+e4);
System.out.println("e5 = "+e5+" e6= "+e6);
System.out.println("e7 = "+e7+" e8= "+e8);
System.out.println("f1 = "+f1+" f2= "+f2);
System.out.println("c1 = "+c1);
System.out.println("cad1 = "+cad1+"\n");
}
}
class OperadorAritmetico{
public static void main (String args[]){
int x=20,y=6; //variable que almacena un número tipo byte
int k,p;
int suma,resta,multiplicacion,residuo;
float division;
suma=x+y;
resta=x-y;
multiplicacion=x*y;
residuo=x%y;
division=(float) x/y;
x++; // x=x+1
--y; // y=y-1
System.out.println();
System.out.println("Suma = "+suma);
System.out.println("Resta = "+resta);
System.out.println("Multiplicacion = "+multiplicacion);
System.out.println("Division = "+division);
System.out.println("Residuo = "+residuo);
System.out.println("Operador ++ = "+x);
System.out.println("Operador -- = "+y);
System.out.println("Operador ++ (p)= "+p);
System.out.println("Operador -- (k)= "+k+"\n");
}
}
Suma = 26
Resta = 14
Multiplicacion = 120
Mg. Rubén Galeas Arana -9-
Division = 3.3333333
Residuo =2
Operador ++ = 22
Operador -- =4
Operador ++ (p)= 21
Operador -- (k) = 4
class OperadorAritmeticoByte{
public static void main (String args[]){
byte a1,a2; //variable que almacena un número tipo byte
byte suma,resta,multiplicacion,residuo;
float division;
a1=12;
a2=5;
suma=(byte)(a1+a2);
resta=(byte)(a1-a2);
multiplicacion=(byte)(a1*a2);
division=(float)a1/a2;
residuo=(byte)(a1%a2);
class OperadorAritmeticoShort{
public static void main (String args[]){
short a1,a2; //variable que almacena un número tipo short
short suma,resta,multiplicacion,residuo;
float division;
a1=30;
a2=11;
suma=(short)(a1+a2);
resta=(short)(a1-a2);
multiplicacion=(short)(a1*a2);
Mg. Rubén Galeas Arana - 10 -
division=(float)a1/a2;
residuo=(short)(a1%a2);
class OperadorAritmeticoInt{
public static void main (String args[]){
int a1,a2; //variable que almacena un número tipo int
int suma,resta,multiplicacion,residuo;
float division;
a1=30;
a2=11;
suma=a1+a2;
resta=(int)(a1-a2);
multiplicacion=a1*a2;
division=(float)a1/a2;
residuo=(int)(a1%a2);
class OperadorAritmeticoLong{
public static void main (String args[]){
long a1,a2; //variable que almacena un número tipo long
long suma,resta,multiplicacion,residuo;
float division;
a1=2147483650L; // el literal L es necesario
a2=7;
suma=(long)(a1+a2);
resta=a1-a2;
multiplicacion=a1*a2;
division=(float)a1/a2;
residuo=(long)(a1%a2);
class OperadorAritmeticoFloat{
public static void main (String args[]){
float a1,a2; //variable que almacena un número tipo float
float suma,resta,multiplicacion;
float division;
a1=12.78F; // El literal F es obligatorio
a2=5;
suma=a1+a2;
resta=(float)(a1-a2);
multiplicacion=a1*a2;
division=a1/a2;
class OperadorAritmeticoDouble{
public static void main (String args[]){
double a1,a2; //variable que almacena un número tipo double
double suma,resta,multiplicacion;
double division;
a1=12.64E300;
a2=5.22e300;
suma=(double)(a1+a2);
resta=a1-a2;
multiplicacion=(double)(a1*a2); // provoca un desbordamiento
division=a1/a2;
}
}
class FormulasMatematicas{
public static void main (String args[]){
int a=12,b=3,c=10;
float x,y,z,w;
x=(3*a+2*b-6)/c;
y=2*a/b+(a+b)/(3*c);
z= -5*a+3*a/(b+(2-b)/(2*b-c));
w=3*a/(4*b)+b/(c+a/b)-2*a;
System.out.println("x = "+x);
System.out.println("y = "+y);
System.out.println("z = "+z);
System.out.println("w = "+w+"\n");
}
}
x=3.0
y=8.0
z=-48.0
w=-21.0
class FormulasMatematicas{
public static void main (String args[]){
int a=12,b=3,c=10;
float x,y,z,w;
x=(float)(3*a+2*b-6)/c;
y=(float)2*a/b+(float)(a+b)/(3*c);
z= -5*a+(float)3*a/(b+(float)(2-b)/(2*b-c));
w=(float)3*a/(4*b)+(float)b/(c+(float)a/b)-2*a;
System.out.println("x = "+x);
System.out.println("y = "+y);
System.out.println("z = "+z);
System.out.println("w = "+w+"\n");
}
}
int x=12,y=10;
float a;
a=12.345F;
Mg. Rubén Galeas Arana - 14 -
2°) Leyendo datos desde el teclado, para ello se utiliza la clase java.io
class AreaRectangulo01{
public static void main (String args[]){
float base=12.54F,altura=20.5F;
float area;
area=base*altura;
System.out.println("area = "+area+" m2 \n");
}
}
− B ± B 2 − 4AC
x=
2A
x1=(-B+sqrt(B*B-4*A*C))/(2*A);
x2=(-B-sqrt(B*B-4*A*C))/(2*A);
D=B*B-4*A*C;
N=2*A;
x1=(-B+sqrt(D))/N;
x2=(-B-sqrt(D))/N;
b) Operadores lógicos.
En la Tabla 2.5 se muestra los valores que devuelve después de trabajar con
los operadores lógicos.
Tabla 2.5.
Valores de Variables Resultados de los Operadores Lógicos
A B (A)&&(B) (A)| |(B) !(A)
V V V V F
V F F V F
F V F V V
F F F F V
1) If unilínea.
if (condición) sentenciaV;
F
Condición 2) If multilínea.
if (condición) {
V Instrucción 1;
Instrucción 2;
AcciónV Instrucción 3; AcciónV
:
.
Instrucción N;
};
1) If unilínea.
2) If multilínea.
V F if (condición) {
Condición Instrucción 1;
Instrucción 2;
Instrucción 3; AcciónV
AcciónV AciónF :
.
Instrucción N;
}
else {
Instrucción 1;
Instrucción 2;
Instrucción 3; AcciónF
:
.
Instrucción N;
};
class EstructuraIF{
public static void main (String args[]) throws IOException{
// Definir un flujo de caracteres de entrada: flujoE
InputStreamReader yyy = new InputStreamReader(System.in);
BufferedReader kkk = new BufferedReader(yyy);
if (dato1>dato2){
suma=dato1+dato2;
resta=dato1-dato2;
System.out.println("La suma es = "+suma);
System.out.println("La resta es = "+resta+"\n");
} // no se debe poner punto y coma
else {
multiplicacion=dato1*dato2;
division=(float)dato1/dato2;
System.out.println("La multipliacion es = "+multiplicacion);
System.out.println("La division es = "+division+"\n");
}
}
}
switch (Expresión) {
case valor1:
instrucción1;
instrucción2;
instrucción3; Acción 1
M
instrucciónN;
Valor 1 Valor N break;
Expresión case valor2:
instrucción1;
Valor 2 Valor 3 instrucción2;
instrucción3; Acción 2
M
Acción 1 Acción 2 Acción 3 ... Acción N
instrucciónN;
break;
M
default:
instrucción1;
instrucción2;
instrucción3; Acción Otro
M
instrucciónN;
};
switch (dia){
case 1: System.out.println("lunes");break;
case 2: System.out.println("martes");break;
case 3: System.out.println("miercoles");break;
case 4: System.out.println("jueves");break;
case 5: System.out.println("viernes");break;
case 6: System.out.println("sabado");break;
case 7: System.out.println("domingo");break;
default: System.out.println("Este dia no existe");break;
}
}
}
Mg. Rubén Galeas Arana - 20 -
2.13 ESTRUCTURAS DE CONTROL REPETITIVAS.
a) Contador.
Aquí sería bueno aclarar algunos otros usos de los operadores unarios; en el
siguiente bloque de programa, se muestra algunos usos de estos operadores:
b) Acumulador.
suma=10;
suma=suma+20;
Mg. Rubén Galeas Arana - 21 -
suma=suma+50;
while (condición) {
F instrucción1;
Condición instrucción2;
instrucción3; AciónV
V M
instrucciónN;
AcciónV };
do {
instrucción1;
AcciónV instrucción2;
instrucción3; AcciónV
M
V instrucciónN;
Condición } while (condición);
for (variable=Vi;variable<=Vf;variable=variable+N); {
instrucción1;
F
Condición instrucción2;
instrucción3; AcciónV
V
M
instrucciónN;
AcciónV };
class UsoWhile{
public static void main (String args[]) throws IOException{
String teclado;
int numeroDatos;
int dato;
int i=1; // declaración de contador
int suma=0; // declaración de acumulador
while(i<=numeroDatos){
System.out.print("Ingrese dato: ");
teclado = kkk.readLine();
dato=Integer.parseInt(teclado);
suma=suma+dato;
i=i+1;
};
class UsoDoWhile{
public static void main (String args[]) throws IOException{
String teclado;
int numeroDatos;
int dato;
Mg. Rubén Galeas Arana - 24 -
int i=0; // declaración de contador
int suma=0; // declaración de acumulador
do{
i++;
System.out.print("Ingrese dato: ");
teclado = kkk.readLine();
dato=Integer.parseInt(teclado);
suma=suma+dato;
}while(i<numeroDatos);
class UsoFor{
public static void main (String args[]) throws IOException{
String teclado;
int numeroDatos;
int dato;
int i; // declaración de contador
int suma=0; // declaración de acumulador
for(i=1;i<=numeroDatos;i++){
System.out.print("Ingrese dato("+i+"): ");
teclado = kkk.readLine();
dato=Integer.p arseInt(teclado);
suma=suma+dato;
};
Cuando hacemos correr el programa anterior para 5 datos, los resultados del
programa se muestran en la Figura 2.3. En forma similar debe salir para los
bucles “while” y “do-while”.
f) Sentencia “break”.
g) Sentencia “continue”.
a) Atributos.
b) Métodos.
2 + ln( x + 1) − x.sen ( x )
y=
2,3.x + cos( π / 5) + x 3, 2
class FuncionesMatematica{
public static void main (String args[]) throws IOException{
InputStreamReader yyy = new InputStreamReader(System.in);
BufferedReader kkk = new BufferedReader(yyy);
String teclado;
double x,y;
y=(2+Math.log(x+1)-x*Math.sin(x))/(2.3*x+Math.cos(Math.PI/5)+Math.pow(x,3.2));
System.out.println("y = "+y+"\n");
}
}
03. Se desea visualizar por pantalla los números enteros del 1 al 10 en una sola fila todos
separados por comas.
04. Se desea visualizar por pantalla los números enteros del 10 al 1 en una columna.
05. De un conjunto de N números enteros (sólo positivos) que se deben ingresar desde el teclado
se desea saber cuántos de ellos son números pares y cuántos son números impares.
El valor de N se debe ingresar desde el teclado y su valor debe estar entre 1 y 20.
1 2 3 N
E= + + +L+
2 3 4 N +1
El valor de N se debe ingresar desde el teclado y su valor debe estar entre 1 y 10.
1 2 3 N
E= − + −L±
2 3 4 N +1
El valor de N se debe ingresar desde el teclado y su valor debe estar entre 1 y 25.
09. Un comerciante registra sus ventas diarias en una semana de lunes a domingo con sus
respectivos montos. El comerciante desea saber el monto total vendido en la semana, el
promedio de ventas diario en dicha semana, el día que vendió más con su monto respectivo y el
día que vendió menos con su respectivo monto.
En los dos últimos casos, se observa que también pueden crearse listas ya con
tamaño fijo e inicializadas o cargadas.
class UsoLista{
public static void main (String args[]) throws IOException{
String teclado;
int numeroDatos;
class UsoLista01{
public static void main (String args[]){
int dato[]={10,23,44,55};
float sueldo[]={40.85f,65.30f,33.33f};
String municipio[]={"Huancayo","El Tambo","Chilca"};
Mg. Rubén Galeas Arana - 31 -
int i; // declaración de contador
3 − 3 5 0 − 1
A = 5 2 1 5 0
− 1 2 3 4 1
class SumaMatrices{
public static void main (String args[]) throws IOException{
String teclado;
int numeroFilas,numeroColumnas;
2 1 − 2
B=
2 − 2 0
La matriz suma resultante debe salir:
5 − 1 − 6
C=
3 − 2 2
class MultiplicacionMatrices{
public static void main (String args[]) throws IOException{
String teclado;
int numeroFilasA,numeroColumnasA,numeroFilasB,numeroColumnasB;
if(numeroColumnasA==numeroFilasB){
// procedimiento para almacenar datos de la matriz A desde el teclado
System.out.println("\nIngrese elementos de matriz A:");
for(i=1;i<=numeroFilasA;i++)
for(j=1;j<=numeroColumnasA;j++){
System.out.print("Ingrese elemento("+i+";"+j+"): ");
teclado = kkk.readLine();
a[i][j]=Integer.parseInt(teclado);
};
2 2
B=
1 − 3
La matriz multiplicación resultante debe salir:
5 9
C = 7 − 5
4 − 12
La definición de una clase especifica cómo serán los objetos de dicha clase, es
decir, de qué variables y de qué métodos constarán.
Los métodos en Java pueden ser creados únicamente como parte de una
clase. Cuando se llama a un método de un objeto se dice comúnmente que
se envía un mensaje al objeto.
class Persona{
String nombre;
int edad;
String direccion;
int getEdad(){
return edad;
};
Una vez que se tiene definida la clase a partir de la cual se crearán los objetos
se está en la posibilidad de instanciar los objetos requeridos.
Persona usuario1; //usuario1 es una variable del tipo Persona (declaración del objeto)
usuario1=new Persona(); // iniciación del objeto usuario1
class ProgramaPersona{
public static void main(String args[]){
Persona usr1, usr2; /* Se declaran dos objetos de la clase Persona*/
boolean si_no;
if(si_no == true)
System.out.println("\nEl objeto usr1 SI es instancia de Persona.");
else
System.out.println("\nEl objeto usr1 NO es instancia de Persona.");
if(si_no == true)
System.out.println("\nEl objeto usr2 SI es instancia de Persona.");
else
System.out.println("\nEl objeto usr2 NO es instancia de Persona.");
}
}
Una vez que se ha creado un objeto, seguramente se querrá hacer algo con él.
Tal vez se requiera obtener información de éste, se quiera cambiar su estado, o
se necesite que realice alguna tarea. Los objetos tienen dos formas de hacer
esto.
nombreObjeto.nombreVariable;
class Usuario2{
String nombre;
int edad;
String direccion;
Usuario2(Usuario2 usr){
nombre = usr.getNombre();
edad = usr.getEdad();
direccion = usr.getDireccion();
}
String getNombre(){
return nombre;
}
int getEdad(){
return edad;
}
String getDireccion(){
return direccion;
}
}
class ProgUsuario2{
prog.imprimeUsuario(usr1);
prog.imprimeUsuario(usr2);
}
}
a) Variables de clase. Las variables de clase son variables cuyos valores son
los mismos para la clase y para todas sus instancias. Para indicar que una
variable es una variable de clase se utiliza la palabra clave static en la
declaración de la variable, de la siguiente manera:
b) Métodos de clase. Los métodos de clase al igual que las variables de clase,
se aplican a la clase como un todo y no a sus instancias. Se utiliza de igual
manera la palabra clave static para indicar que un método es un método de
clase, de la siguiente manera:
/* Utilizar esto */
nombreClase.nombreVarClase;
nombreClase.nombreMetodoClase();
/* en lugar de esto */
Mg. Rubén Galeas Arana - 41 -
nombreObjeto.nombreVarClase;
nombreObjeto.nombreMetodoClase();
En esta estructura jerárquica, cada clase tiene sólo una clase padre. La clase
padre de cualquier clase es conocida como su superclase. La clase hija de una
superclase es llamada una subclase.
Es necesario tener en cuenta que los constructores no son heredados por las
subclases.
En Java, la clase padre de todas las clases es la clase Object y cuando una
clase no tiene una superclase explícita, su superclase es Object.
/* Métodos sobrecargados */
int calculaSuma(int x, int y, int z){
...
}
int calculaSuma(double x, double y, double z){
...
Mg. Rubén Galeas Arana - 42 -
}
Como se sabe, una subclase hereda todos los métodos de su superclase que
son accesibles a dicha subclase a menos que la subclase sobreescriba los
métodos.
class ClaseA{
void miMetodo(int var1, int var2){
...
}
String miOtroMetodo( ){
...
}
}
String miOtroMetodo( ){
...
}
}
Una clase abstracta puede contener métodos no-abstractos pero al menos uno
de los métodos debe ser declarado abstracto.
4.9 PAQUETES.
Para hacer que una clase sea más fácil de localizar y utilizar así como evitar
conflictos de nombres y controlar el acceso a los miembros de una clase, las
clases se agrupan en paquetes.
package nombrePaquete;
package miPaquete;
class MiClase{
...
}
Otro ejemplo.
package nombre1.nombre2.miPaquete;
class TuClase{
...
}
De esta manera, cuando se requiera hacer uso de estas clases se tendrán que
importar de la siguiente manera.
import miPaquete.MiClase;
import nombre1.nombre2.miPaquete.TuClase;
class OtraClase{
/* Aqui se hace uso de la clase 'Miclase' y de la
clase 'TuClase' */
...
}
import miPaquete.*;
Uno de los beneficios de las clases, es que pueden proteger a sus variables y
métodos (tanto de instancia como de clase) del acceso desde otras clases.
Tabla 4.1
public protected (sin modificador) private
Clase SI SI SI SI
Subclase en el mismo
SI SI SI NO
paquete
No-Subclase en el
SI SI SI NO
mismo paquete
Subclase en diferente
SI SI/NO (*) NO NO
paquete
No-Subclase en
diferente paquete SI NO NO NO
(Universo)
(*) Los miembros (variables y métodos) de clase (static) si son visibles. Los miembros de instancia no son visibles.
Como se observa de la Tabla 4.1, una clase se ve a ella misma todo tipo de
variables y métodos (desde los public hasta los private); las demás clases del
mismo paquete (ya sean subclases o no) tienen acceso a los miembros desde
los public hasta los sin-modificador. Las subclases de otros paquetes pueden
ver los miembros public y a los miembros protected, éstos últimos siempre que
sean static ya de no ser así no serán visibles en la subclase. El resto del
universo de clases (que no sean ni del mismo paquete ni subclases) pueden ver
sólo los miembros public.
Figura 4.1
Figura 4.2
Mg. Rubén Galeas Arana - 46 -
Entonces, lo primero que se debe hacer es crear un proyecto, y que en este
caso lo denominaremos “Proyecto01”, para ello haremos clic en el menú
File/New/Project o simplemente presionamos Control+Mayúscula+N y saldrá la
ventana que se muestra en la Figura 4.3.
Figura 4.3
Figura 4.4
Mg. Rubén Galeas Arana - 47 -
En el campo “Name” pondremos el nombre del proyecto y en el campo
“Location” seleccionaremos la ruta del directorio donde se creará nuestro nuevo
proyecto en este caso con el nombre de “Proyecto01”. Luego, por ahora,
haremos clic directamente en el botón “Finish” y el proyecto se creará en el
directorio especificado; entonces en la esquina superior izquierda de la pantalla
principal del JCreator se puede observar el proyecto que se ha creado con el
nombre de “Proyecto01” tal como se muestra en la Figura 4.5.
Figura 4.5.
Figura 4.6.
Figura 4.7.
Paso 3: Codificación del programa.
package AplicacionGUI;
import java.awt.Frame;
Figura 4.8
Hasta aquí hemos cumplido con nuestro objetivo. A continuación daremos vida
a la ventana (formulario) creado.
package AplicacionGUI;
import java.awt.Frame;
import java.awt.event.*;
package AplicacionGUI;
import java.awt.*;
import java.awt.event.*;
panel1.add(label1);
panel1.add(textField1);
panel1.add(label2);
panel1.add(textField2);
panel2.add(label3);
panel2.add(textField3);
panel3.add(button1);
panel3.add(button2);
panel3.add(button3);
Mg. Rubén Galeas Arana - 51 -
panel3.add(button4);
panel3.add(button5);
add(panel1,BorderLayout.NORTH);
add(panel2,BorderLayout.CENTER);
add(panel3,BorderLayout.SOUTH);
this.show();
Figura 4.9
package AplicacionGUI;
import java.awt.*;
import java.awt.event.*;
//Propiedades de panel1
panel1.setLayout(null);
panel1.setBackground(new Color(158,197,190));
label2.setLocation(25,45);
label2.setSize(120,25);
label2.setText("Ingrese dato 2:");
label2.setFont(new Font("SansSerif",1,18)); // 1 es de negrita
label2.setForeground(new Color(72,66,255));
label3.setLocation(25,75);
label3.setSize(120,25);
label3.setText("Resultado :");
label3.setFont(new Font("SansSerif",2,18)); // 2 es cursiva y 3 es negrita y cursiva
label3.setForeground(Color.red);
label3.setBackground(new Color(0,120,120)); // combinación Rojo,Verde,Azul
textField2.setLocation(165,45);
textField2.setSize(95,25);
textField2.setBackground(new Color(53,190,184));
textField2.setText("");
textField2.setFont(new Font("SansSerif",1,15));
textField2.setForeground(Color.blue);
textField3.setLocation(165,75);
textField3.setSize(95,25);
textField3.setBackground(new Color(53,190,184));
textField3.setText("");
textField3.setFont(new Font("SansSerif",1,15));
textField3.setForeground(Color.blue);
textField3.setEnabled(false); //desactiva el cuadro de texto
button2.setLabel("-");
button2.setLocation(65,130);
button2.setSize(25,25);
button2.setBackground(new Color(112,255,164));
button2.setForeground(Color.red);
button2.setFont(new Font("SansSerif",0,11));
button3.setLabel("*");
button3.setLocation(105,130);
button3.setSize(25,25);
Mg. Rubén Galeas Arana - 54 -
button3.setBackground(new Color(112,255,164));
button3.setForeground(Color.red);
button3.setFont(new Font("SansSerif",0,11));
button4.setLabel("/");
button4.setLocation(145,130);
button4.setSize(25,25);
button4.setBackground(new Color(112,255,164));
button4.setForeground(Color.red);
button4.setFont(new Font("SansSerif",0,11));
button5.setLabel("Salir");
button5.setLocation(210,130);
button5.setSize(50,25);
button5.setBackground(new Color(112,255,164));
button5.setForeground(Color.red);
button5.setFont(new Font("SansSerif",1,11));
panel1.add(textField1,null);
panel1.add(textField2,null);
panel1.add(textField3,null);
panel1.add(button1,null);
panel1.add(button2,null);
panel1.add(button3,null);
panel1.add(button4,null);
panel1.add(button5,null);
add(panel1,BorderLayout.CENTER);
this.show();
package AplicacionGUI;
import java.awt.*;
import java.awt.event.*;
//Propiedades de panel1
panel1.setLayout(null);
panel1.setBackground(new Color(158,197,190));
label2.setLocation(25,45);
label2.setSize(120,25);
label2.setText("Ingrese dato 2:");
label2.setFont(new Font("SansSerif",1,18)); // 1 es de negrita
label2.setForeground(new Color(72,66,255));
textField2.setLocation(165,45);
textField2.setSize(95,25);
textField2.setBackground(new Color(53,190,184));
textField2.setText("");
textField2.setFont(new Font("SansSerif",1,15));
textField2.setForeground(Color.blue);
textField3.setLocation(165,75);
textField3.setSize(95,25);
textField3.setBackground(new Color(53,190,184));
textField3.setText("");
textField3.setFont(new Font("SansSerif",1,15));
textField3.setForeground(Color.blue);
textField3.setEnabled(false); //desactiva el cuadro de texto
button1.addActionListener(new ClicBoton1(this));
button2.setLabel("-");
button2.setLocation(65,130);
button2.setSize(25,25);
button2.setBackground(new Color(112,255,164));
button2.setForeground(Color.red);
button2.setFont(new Font("SansSerif",0,11));
button2.addActionListener(new ClicBoton2(this));
button3.setLabel("*");
button3.setLocation(105,130);
button3.setSize(25,25);
button3.setBackground(new Color(112,255,164));
button3.setForeground(Color.red);
button3.setFont(new Font("SansSerif",0,11));
button3.addActionListener(new ClicBoton3(this));
button4.setLabel("/");
Mg. Rubén Galeas Arana - 57 -
button4.setLocation(145,130);
button4.setSize(25,25);
button4.setBackground(new Color(112,255,164));
button4.setForeground(Color.red);
button4.setFont(new Font("SansSerif",0,11));
button4.addActionListener(new ClicBoton4(this));
button5.setLabel("Salir");
button5.setLocation(210,130);
button5.setSize(50,25);
button5.setBackground(new Color(112,255,164));
button5.setForeground(Color.red);
button5.setFont(new Font("SansSerif",1,11));
//
button5.addMouseListener(new ClicBoton5(this));
panel1.add(textField1,null);
panel1.add(textField2,null);
panel1.add(textField3,null);
panel1.add(button1,null);
panel1.add(button2,null);
panel1.add(button3,null);
panel1.add(button4,null);
panel1.add(button5,null);
add(panel1,BorderLayout.CENTER);
this.show();
num1=Double.parseDouble(textField1.getText());
num2=Double.parseDouble(textField2.getText());
resultado=num1+num2;
Mg. Rubén Galeas Arana - 58 -
cadenaResultado=String.valueOf(resultado); //Convierte número a cadena
textField3.setText(cadenaResultado);
label3.setText("Suma :");
}
num1=Double.parseDouble(textField1.getText());
num2=Double.parseDouble(textField2.getText());
resultado=num1-num2;
textField3.setText(String.valueOf(resultado));
label3.setText("Diferencia :");
}
num1=Double.parseDouble(textField1.getText());
num2=Double.parseDouble(textField2.getText());
resultado=num1*num2;
textField3.setText(String.valueOf(resultado));
label3.setText("Producto :");
}
num1=Double.parseDouble(textField1.getText());
num2=Double.parseDouble(textField2.getText());
resultado=num1/num2;
textField3.setText(String.valueOf(resultado));
label3.setText("Cociente :");
}
ClicBoton1(ClaseVentana eventoClic){
this.eventoClic = eventoClic;
}
ClicBoton2(ClaseVentana eventoClic){
this.eventoClic = eventoClic;
}
ClicBoton3(ClaseVentana eventoClic){
this.eventoClic = eventoClic;
}
ClicBoton4(ClaseVentana eventoClic){
this.eventoClic = eventoClic;
}
ClicBoton5(ClaseVentana eventoClic){
this.eventoClic = eventoClic;
}
Figura 4.12
package AplicacionGUI;
import java.awt.*;
import java.awt.event.*;
public CasillaVerificacion(){
// Métodos heredatos de la clase frame
this.setTitle("Uso de Colores"); //Título de la ventana
this.setLocation(100,100); //Localización de inicio de la ventana
this.setSize(560,275); //Ancho y alto de la ventana
label2.setLocation(25,140);
label2.setSize(150,25);
label2.setText("Colores del texto");
label2.setFont(new Font("SansSerif",0,18));
button1.addActionListener(new CasillaVerificacion_button1_actionAdapter(this));
checkbox1.addItemListener(new CasillaVerificacion_checkbox1_itemAdapter(this));
checkbox2.setLabel("Cursiva");
checkbox2.setBounds(new Rectangle(175,100,120,25));
checkbox2.setFont(new Font("SansSerif",2,15));
checkbox2.addItemListener(new CasillaVerificacion_checkbox2_itemAdapter(this));
optionBox1.addItemListener(new CasillaVerificacion_optionBox1_itemAdapter(this));
optionBox2.setLabel("Verde");
optionBox2.setBounds(new Rectangle(25, 185, 135, 24));
optionBox2.setFont(new Font("SansSerif",0,15));
optionBox2.addItemListener(new CasillaVerificacion_optionBox2_itemAdapter(this));
optionBox3.setLabel("Rojo");
optionBox3.setBounds(new Rectangle(25, 205, 135, 24));
optionBox3.setFont(new Font("SansSerif",0,15));
optionBox3.addItemListener(new CasillaVerificacion_optionBox3_itemAdapter(this));
panel1.add(textField1,null);
panel1.add(button1,null);
panel1.add(optionBox1,null);
panel1.add(optionBox2,null);
panel1.add(optionBox3,null);
panel1.add(checkbox1,null);
panel1.add(checkbox2,null);
add(panel1,BorderLayout.CENTER);
// método main
public static void main (String [] arg){
new CasillaVerificacion();
}
void button1_actionPerformed(ActionEvent e) {
cerrarVentana();
}
void checkbox1_itemStateChanged(ItemEvent e) {
cambiarEstilo();
}
void checkbox2_itemStateChanged(ItemEvent e) {
cambiarEstilo();
}
void optionBox1_itemStateChanged(ItemEvent e) {
cambiarColor();
}
void optionBox2_itemStateChanged(ItemEvent e) {
cambiarColor();
}
void optionBox3_itemStateChanged(ItemEvent e) {
cambiarColor();
}
CasillaVerificacion_button1_actionAdapter(CasillaVerificacion adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.button1_actionPerformed(e);
}
}
CasillaVerificacion_checkbox1_itemAdapter(CasillaVerificacion adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.checkbox1_itemStateChanged(e);
}
}
CasillaVerificacion_checkbox2_itemAdapter(CasillaVerificacion adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.checkbox2_itemStateChanged(e);
}
}
CasillaVerificacion_optionBox1_itemAdapter(CasillaVerificacion adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.optionBox1_itemStateChanged(e);
}
}
CasillaVerificacion_optionBox2_itemAdapter(CasillaVerificacion adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.optionBox2_itemStateChanged(e);
Mg. Rubén Galeas Arana - 65 -
}
}
CasillaVerificacion_optionBox3_itemAdapter(CasillaVerificacion adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.optionBox3_itemStateChanged(e);
}
}
Figura 4.13
import java.awt.*;
import java.awt.event.*;
public CuadrosDeListas(){
// Métodos heredatos de la clase frame
this.setTitle("Circuitos Turísticos"); //Título de la ventana
this.setLocation(100,100); //Localización de inicio de la ventana
this.setSize(385,400); //Ancho y alto de la ventana
label3.setFont(new Font("SansSerif",1,12));
label3.setText("Seleccione lugar que desea visitar de Arequipa:");
label3.setBounds(new Rectangle(17,116,300,25));
label5.setFont(new Font("SansSerif",1,12));
label5.setText("km");
label5.setBounds(new Rectangle(239,269,42,25));
Mg. Rubén Galeas Arana - 67 -
//Propiedades de las listas
choice1.setBounds(new Rectangle(16,77,179,30));
choice1.setFont(new Font("SansSerif",1,15));
choice1.setForeground(Color.red);
choice1.add("Arequipa");
choice1.add("Cuzco");
choice1.add("Junín");
choice1.addItemListener(new CuadrosDeListas_choice1_itemAdapter(this));
list1.setBounds(new Rectangle(17,142,344,100));
list1.setFont(new Font("SansSerif",1,12));
list1.add("Valle del Colca"); //Lugares iniciales de Arequipa
list1.add("El Volcán Misti");
list1.add("Camaná");
button1.addActionListener(new CuadrosDeListas_button1_actionAdapter(this));
panel1.add(textField1,null);
panel1.add(button1,null);
panel1.add(choice1, null);
panel1.add(list1, null);
add(panel1,BorderLayout.CENTER);
// main
public static void main (String [] arg){
new CuadrosDeListas();
}
void button1_actionPerformed(ActionEvent e) {
cerrarVentana();
//System.exit(0);
}
if (indice==0){
label3.setText("Seleccione lugar que desea visitar de "+choice1.getSelectedItem());
textField1.setText("845.23"); //Distancia de Lima a Arequipa
if (indice==1){
label3.setText("Seleccione lugar que desea visitar de "+choice1.getSelectedItem());
textField1.setText("1534.72"); //Distancia de Lima a Cuzco
list1.clear();
list1.add("Saccsaihuamán");
list1.add("Urubamba");
list1.add("Machupicchu");
list1.add("Valle Sagrado de los Incas");
};
if (indice==2){
label3.setText("Seleccione lugar que desea visitar de "+choice1.getSelectedItem());
textField1.setText("257.45"); //Distancia de Lima a Arequipa
list1.clear();
list1.add("Lago Junín");
list1.add("Laguna de Paca");
list1.add("Ingenio");
list1.add("Nevado Huaytapallana");
list1.add("Chanchamayo");
list1.add("Tarma");
list1.add("Satipo");
list1.add("Concepción");
list1.add("Sapallanga");
list1.add("Laguna de Ñahuimpuquio");
list1.add("Jauja");
};
}
} //Fin de la clase CuadrosDeListas
Mg. Rubén Galeas Arana - 69 -
class CuadrosDeListas_choice1_itemAdapter implements java.awt.event.ItemListener {
CuadrosDeListas adaptee;
CuadrosDeListas_choice1_itemAdapter(CuadrosDeListas adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.choice1_itemStateChanged(e);
}
}
CuadrosDeListas_button1_actionAdapter(CuadrosDeListas adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.button1_actionPerformed(e);
}
}
Figura 4.14
import java.awt.*;
import java.awt.event.*;
this.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent evt ) {
// Se concluye el programa
System.exit( 0 );
}
}
);
}
//método principal
public static void main( String[] args ) {
new ClaseGraficos();
}
// Línea simple
g.setColor(Color.red); //dibuja línea de color rojo
g.drawLine(10,0,50,50);
g.drawString("Línea",10,62);
// Rectángulo
g.setColor(Color.green);
g.drawRect(140,0,50,50 );
g.drawString("Rectángulo",135,62);
// Rectángulo relleno
g.setColor(Color.cyan);
g.fillRect(220,0,50,50);
g.drawString("Rect.rellenado",205,62);
// Rectángulo redondeado
g.setColor(Color.magenta );
g.drawRoundRect(315,0,50,50,10,10);
g.drawString("Rectángulos redondeados",300,62);
// Rectángulo 3D rellenado
g.setColor(Color.lightGray);
g.fill3DRect(155,90,50,25,true );
// Dibujo de polígonos
g.setColor(Color.blue);
int x2Datos[] = {300,350,300,350};
int y2Datos[] = {150,200,200,150};
g.drawPolygon(x2Datos,y2Datos,4);
g.drawString("Polígono",300,218);
// Polígono relleno
g.setColor(Color.yellow);
int x3Datos[] = {385,435,385,435};
int y3Datos[] = {150,200,200,150};
g.fillPolygon(x3Datos,y3Datos,4);
g.drawString("Polígono rellenado",360,218 );
}
}
Figura 4.15
import java.awt.*;
import java.awt.event.*;
this.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent evt ) {
// Se concluye el programa
System.exit(0);
}
}
);
}
CREACIÓN DE MENÚS
import java.awt.*;
import java.awt.event.*;
menuEdicion.setLabel("Edicion");
menuEdicionCopiar.setLabel("Copiar");
menuEdicionPegar.setLabel("Pegar");
menuVer.setLabel("Ver");
menuVerFuente.setLabel("Código fuente");
menuVerBarra.setLabel("Barra de estado");
menuVerExplorador.setLabel("Explorador");
menuBar.add(menuArchivo);
menuArchivo.add(menuArchivoAbrir);
menuArchivo.add(menuArchivoGuardar);
menuArchivo.addSeparator(); //inserta una línea separadora
menuArchivo.add(menuArchivoSalir);
menuBar.add(menuEdicion);
menuEdicion.add(menuEdicionCopiar);
menuEdicion.add(menuEdicionPegar);
menuBar.add(menuVer);
menuVer.add(menuVerFuente);
menuVer.add(menuVerBarra);
menuVer.addSeparator();
menuVer.add(menuVerExplorador);
this.show();
//Método principal
public static void main(String[] args) {
// Crea la aplicación formulario01
new CreacionMenuFrame();
}
Las Bases de Datos son, sin lugar a dudas, las estructuras más utilizadas en
ordenadores; ya que son el corazón de sistemas avanzados o complejos como el
censo de una nación, la nómina de empleados de una empresa, el sistema de
facturación de una multinacional, etc..
El API JDBC soporta dos modelos diferentes de acceso a Bases de Datos, los
modelos de dos y tres capas.
Figura 5.2
Esto significa que el driver JDBC específico para conectarse con la base de
datos, debe residir en el sistema local. La base de datos puede estar en
cualquier otra máquina y se accede a ella mediante la red. Esta es la
configuración típica Cliente/Servidor, el programa cliente envía instrucciones
SQL a la base de datos, ésta las procesa y envía los resultados de vuelta a la
aplicación.
Figura 5.3
a) Puente JDBC-ODBC.
b) Java/Binario.
Este driver se salta la capa ODBC y habla directamente con la librería nativa
del fabricante del sistema DBMS (como pudiera ser DB-Library para Microsoft
SQL Server o CT-Lib para Sybase SQL Server). Este driver no es un driver
100% Java porque necesita la existencia de un código binario (la librería
DBMS) en la máquina del cliente, con las limitaciones y problemas que esto
implica.
Figura 5.5
c) Protocolo nativo.
Figura 5.6
Mg. Rubén Galeas Arana - 80 -
d) Protocolo independiente/100% Java.
Esta es la opción más flexible, se trata de un driver 100% Java con Protocolo
independiente.
Figura 5.7
Este es un driver Java puro que habla directamente con la BD y por lo tanto es
el método más eficiente de acceso a DB; por otro lado la mayoría de
fabricantes de BD proveen drivers JDBC de este tipo para sus BD, por lo que
no hay problema en su uso.
Figura 5.8
Figura 5.9
Figura 5.10
La base de datos se comunica con ODBC y este lo hace con JDBC y este a
su vez se comunica con nuestra aplicación final.
Figura 5.11
Figura 5.12
Figura 5.13
4) Luego en la ventana que sale, se debe llenar todos los datos que se
muestra en la Figura 5.14 y hacer clic en el botón “Siguiente”
Cualquier nombre
Cualquier nombre
Figura 5.14
Figura 5.16
Figura 5.18
Figura 5.20
package ejempbd1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
//Construir el marco
public Marco1() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Inicialización de componentes
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
jLabel1.setFont(new java.awt.Font("Dialog", 1, 15));
jLabel1.setText("ACCESO A BASE DE DATOS");
jLabel1.setBounds(new Rectangle(99, 3, 209, 24));
contentPane.setLayout(null);
this.setSize(new Dimension(400,350));
this.setTitle("Acceso a bd");
jButton1.setBounds(new Rectangle(76, 46, 236, 29));
jButton1.setText("Mostrar el contenido de la tabla trabajador");
jButton1.addActionListener(new Marco1_jButton1_actionAdapter(this));
jTextArea1.setText("");
jTextArea1.setBounds(new Rectangle(11, 90, 374, 144));
jButton2.setBounds(new Rectangle(159, 258, 99, 27));
jButton2.setText("Salir");
jButton2.addActionListener(new Marco1_jButton2_actionAdapter(this));
contentPane.add(jLabel1, null);
contentPane.add(jButton1, null);
contentPane.add(jTextArea1, null);
contentPane.add(jButton2, null);
}
//Modificado para poder salir cuando se cierra la ventana
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
void jButton1_actionPerformed(ActionEvent e) {
jTextArea1.setText("");
for(int i=1; i<=numColumnas; ++i) //procedimiento que detecta los campos de la tabla
jTextArea1.append(rmeta.getColumnName(i) + " ");
jTextArea1.append("\n");
Marco1_jButton1_actionAdapter(Marco1 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
Marco1_jButton2_actionAdapter(Marco1 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
Figura 5.21
Figura 5.22
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//Construir el marco
public UsoJTable() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Inicialización de componentes
private void jbInit() throws Exception {
//Creación de campos y registros para el JTable
String[] campos= {"Código","Nombre","Edad","Sueldo","Funcionario"};
Object[][] registros = {
{"RTG01", "Raul Torres Galván",new Integer(25),
new Float(800.25),new Boolean(false)},
{"HRG01", "Henry Ríos García",new Integer(29),
new Float(1200.45),new Boolean(true)},
{"JRB01", "Juana Roque Baltazar",new Integer(26),
new Float(786.95),new Boolean(false)},
};
void jButton1_actionPerformed(ActionEvent e) {
System.exit(0);
}
}
UsoJTable_jButton1_actionAdapter(UsoJTable adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
Mg. Rubén Galeas Arana - 91 -
Ahora mejoraremos la aplicación anterior para recuperar en unos TextField los
datos del Jtable, de tal manera que la ventana debe ser similar al que se
muestra en la Figura 5.23.
Figura 5.23
Para ello crearemos otro proyecto con los datos que se muestra en la
Figura 5.24.
Figura 5.24
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
//Construir el marco
public UsoJTable01() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Inicialización de componentes
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(null);
void jButton1_actionPerformed(ActionEvent e) {
System.exit(0);
}
}
UsoJTable01_jButton1_actionAdapter(UsoJTable01 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
Figura 5.25
Para ello crearemos otro proyecto y el código que se debe ingresar será el
siguiente:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.sql.*;
//Construir el marco
public UsoJTable01() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Inicialización de componentes
private void jbInit() throws Exception {
for(int i=1; i<=numColumnas; ++i) //procedimiento que detecta los campos de la tabla
campos[i-1]=rmeta.getColumnName(i);
void jButton1_actionPerformed(ActionEvent e) {
System.exit(0);
}
}
UsoJTable01_jButton1_actionAdapter(UsoJTable01 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
Figura 6.1
JScrollPane
Figura 6.2
Figura 6.3
Figura 6.4
Figura 6.5
- Para lograr el menú que se muestra en la Figura 6.6 se hace uso del ícono
“Inserta menú” y del ícono “Inserta separador”, luego a cada menú y sub
menú se debe poner sus respectivos nombres.
Inserta separador
Inserta menú
Figura 6.6
// Asignar cero a un contador para realizar un recuento de los caracteres que se han leído del archivo.
int chars_read = 0;
// Crea una matriz de caracteres del tamaño del archivo, para utilizarla como búfer de
// datos, en el que leer los datos del texto.
char[] data = new char[size];
in.close();
// Crear una cadena temporal que contenga los datos, y asignar la cadena a JTextArea.
jTextArea1.setText(new String(data, 0, chars_read));
catch(IOException e) {
statusBar.setText("Error al abrir "+fileName);
}
}
// Guardar archivo actual; gestionar los que no tienen nombre de archivo; informar a la barra de estado.
boolean saveFile() {
try {
// Abrir el archivo del nombre actual.
File file = new File (currFileName);
void jMenuFileNuevo_actionPerformed(ActionEvent e) {
// Gestiona el elemento de menú Archivo/Nuevo.
if (comprobacion()) {
jTextArea1.setText(""); // Borra el texto del área del texto.
Pero como aún no jemos creado el método fileOpen() el JBuilder nos envía
un mensaje de error, por el momento no se preocupe ya que ese método y
los demás métodos lo desarrollaremos más adelante.
void jButton3_actionPerformed(ActionEvent e) {
//Gestionar el botón Acerca de de la barra de herramientas
helpAbout();
}
- Ahora para que funcione bien, debemos asociarlo al “área de texto”, para
ello haga clic en la pestaña “Fuente” y seleccione
jMenuEditFuente_actionPerformed(ActionEvent e) e ingrese el siguiente
código:
// Gestiona el elemento de menú "Edición Fuente"
// Obtiene la fuente existente en el área de texto y la coloca
// en el selector de fuentes antes de mostrarlo,
// para que se modifique la fuente actual.
fontChooser1.setSelectedFont(jTextArea1.getFont());
// Comprueba el valor devuelto por showDialog() para verificar si el usuario
// ha pulsado Aceptar. Obtiene la nueva fuente del Selector de fuentes.
if (fontChooser1.showDialog()) {
// Asigna a la fuente de jTextArea1 el valor
// seleccionado por el usuario antes de pulsar Aceptar
jTextArea1.setFont(fontChooser1.getSelectedFont());
}
Ahora para que funcione bien, debemos asociarlo al “área de texto”, para
ello ingresaremos el siguiente código:
//Gestiona el elemento de menú "Color de texto"
Color color = JColorChooser.showDialog(this,"Color de texto",jTextArea1.getForeground());
if (color != null) {
jTextArea1.setForeground(color);
}
Figura 6.8
Figura 6.9
Figura 6.10
Figura 6.11
02) Construir del DSN (Data Source Name) mediante ODBC (los pasos para la
construcción del “dsn” se pueden observar en el ítem 5.4 sección “b” del
capítulo 5); el “dsn” debe tener el nombre “dsnDEPORTE” y como
descripción “ConexionDEPORTE”.
Por:
this.setSize(new Dimension(800, 600));
Figura 6.12
Figura 6.13
Figura 6.14
Figura 6.16
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.sql.*;
public ConsultaDB() {
this(null, "", false);
}
panel1.setLayout(borderLayout1);
jPanel1.setLayout(null);
jPanel1.setBackground(new Color(150, 255, 255));
getContentPane().add(panel1);
panel1.add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jTextField2, null);
jPanel1.add(jScrollPane1, null);
jPanel1.add(jLabel5, null);
jPanel1.add(jLabel4, null);
jPanel1.add(jButton2, null);
jPanel1.add(jLabel6, null);
jPanel1.add(jLabel7, null);
jPanel1.add(jButton3, null);
jPanel1.add(jLabel3, null);
jPanel1.add(jLabel8, null);
jPanel1.add(jTextField1, null);
jPanel1.add(jLabel9, null);
jPanel1.add(choice1, null);
jPanel1.add(jLabel2, null);
jPanel1.add(jLabel1, null);
jPanel1.add(jButton1, null);
jPanel1.add(jCheckBox1, null);
jScrollPane1.getViewport().add(jTable1, null);
String fotografia;
fotografia="C:/Imagenes/"+registros[seleFila][0].toString()+".jpg";
ImageIcon image5 = new ImageIcon(fotografia);
jLabel5.setIcon(image5);
}
});
}
for(int i=1; i<=numColumnas; ++i){ //procedimiento que detecta los campos de la tabla
campos[i-1]=rmeta.getColumnName(i);
choice1.add(campos[i-1]);
}
void jButton2_actionPerformed(ActionEvent e) {
dispose();
}
void jButton3_actionPerformed(ActionEvent e) {
String consulta;
consulta=jTextField2.getText();
consultar(consulta); //Muestra la consulta del contenido de jTextField2
actualizaTabla(); //Llama al método actualizaTabla
}
void jButton1_actionPerformed(ActionEvent e) {
String campo,condicion;
condicion=jTextField1.getText();
int indice=choice1.getSelectedIndex();
campo="";
if (indice==0){
campo="Dep_codigo";
};
if (indice==1){
campo="Dep_nombre";
};
if (indice==2){
campo="Dep_edad";
};
jTextField2.setText("SELECT * FROM Deportistas WHERE "+campo+" "+condicion);
}
void jCheckBox1_actionPerformed(ActionEvent e) {
if (jCheckBox1.isSelected())
jTextField2.setEnabled(true);
else
jTextField2.setEnabled(false);
}
}
Mg. Rubén Galeas Arana - 121 -
class ConsultaDB_jButton2_actionAdapter implements java.awt.event.ActionListener {
ConsultaDB adaptee;
ConsultaDB_jButton2_actionAdapter(ConsultaDB adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
ConsultaDB_jButton3_actionAdapter(ConsultaDB adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton3_actionPerformed(e);
}
}
ConsultaDB_jButton1_actionAdapter(ConsultaDB adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
ConsultaDB_jCheckBox1_actionAdapter(ConsultaDB adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jCheckBox1_actionPerformed(e);
}
}
Figura 6.17
Mg. Rubén Galeas Arana - 122 -
Luego de reemplazar el código anterior haga clic en la ficha “Diseño”,
entonces debe salir el cuadro de diálogo que se muestra en la Figura 6.17;
antes de ejecutar el programa, realice el siguiente paso.
Figura 6.18
Figura 6.19
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
public AnnadirDB() {
this(null, "", false);
}
private void jbInit() throws Exception {
this.setSize(new Dimension(380, 300));
this.setTitle("Ventana para añadir registro en tabla 'Deportistas'");
panel1.setLayout(null);
jLabel1.setFont(new java.awt.Font("SansSerif", 0, 20));
jLabel1.setText("Ingrese datos del Nuevo Deportista:");
jLabel1.setBounds(new Rectangle(21, 16, 332, 31));
panel1.setBackground(new Color(255, 217, 144));
jLabel2.setText("Código:");
jLabel2.setBounds(new Rectangle(94, 62, 47, 23));
jLabel3.setText("Nombre:");
jLabel3.setBounds(new Rectangle(94, 104, 47, 23));
void jButton2_actionPerformed(ActionEvent e) {
dispose();
}
void jButton1_actionPerformed(ActionEvent e) {
int respuesta = JOptionPane.showConfirmDialog( this,"Desea Añadir los datos a la tabla 'Deportistas'",
"Atención",JOptionPane.OK_CANCEL_OPTION);
String consulta = null,codigo=null,nombre=null,edad=null;
codigo=jTextField1.getText();
nombre=jTextField2.getText();
edad=jTextField3.getText();
consulta="INSERT INTO Deportistas (Dep_codigo,Dep_nombre, Dep_edad) VALUES
('"+codigo+"','"+nombre+"',"+edad+")";
st.execute(consulta); // Inserta registro en la tabla
conexion.close(); //cierra la conexión con la base de datos.
AnnadirDB_jButton2_actionAdapter(AnnadirDB adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
AnnadirDB_jButton1_actionAdapter(AnnadirDB adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
Figura 6.20
Figura 6.21
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
public EliminarBD() {
this(null, "", false);
}
private void jbInit() throws Exception {
this.setSize(new Dimension(380, 150));
this.setTitle("Ventana Para Eleminar Registros de tabla 'Deportistas'");
panel1.setLayout(null);
jLabel1.setFont(new java.awt.Font("SansSerif", 0, 11));
jLabel1.setText("Ingrese código del deportista a eliminar:");
jLabel1.setBounds(new Rectangle(56, 18, 200, 31));
panel1.setBackground(new Color(255, 217, 144));
jButton1.setBounds(new Rectangle(51, 79, 112, 27));
jButton1.setText("Eliminar registro");
jButton1.addActionListener(new EliminarBD_jButton1_actionAdapter(this));
jButton2.setBounds(new Rectangle(229, 78, 101, 27));
jButton2.setText("Salir");
jButton2.addActionListener(new EliminarBD_jButton2_actionAdapter(this));
jTextField1.setText("");
jTextField1.setBounds(new Rectangle(256, 25, 55, 22));
getContentPane().add(panel1);
panel1.add(jButton1, null);
panel1.add(jButton2, null);
panel1.add(jTextField1, null);
panel1.add(jLabel1, null);
}
void jButton2_actionPerformed(ActionEvent e) {
dispose();
}
void jButton1_actionPerformed(ActionEvent e) {
int respuesta = JOptionPane.showConfirmDialog( this,"Desea ELIMINAR registro de la tabla
'Deportistas'",
"CUIDADO",JOptionPane.OK_CANCEL_OPTION);
String consulta = null,codigo=null;
codigo=jTextField1.getText();
consulta="DELETE FROM Deportistas WHERE Dep_codigo='"+codigo+"'";
st.execute(consulta); // Elimina registro en la tabla
conexion.close(); //cierra la conexión con la base de datos.
EliminarBD_jButton2_actionAdapter(EliminarBD adaptee) {
this.adaptee = adaptee;
}
Mg. Rubén Galeas Arana - 128 -
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
EliminarBD_jButton1_actionAdapter(EliminarBD adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
Figura 6.22
Los applets son pequeños programas hechos en Java, que se transfieren a las
páginas web y que el navegador ejecuta en el espacio de la página, es por ello que
la manera de trabajar de éstos varía un poco con respecto a los lenguajes de script
como Javascript. Los applets son más difíciles de programar que los scripts en
Javascript y requerirán unos conocimientos básicos o medios del lenguaje Java.
Las características de los applets se pueden considerar desde el punto de vista del
programador y desde el del usuario. En este manual lo más importante es el punto
de vista del programador:
- Los applets también suelen redefinir ciertos métodos gráficos, los más
importantes son: paint() y update(), heredados de Component y de Container; y
repaint() heredado de Component.
Figura 7.1
<HTML>
<APPLET CODE="Bienvenido.class" WIDTH=500 HEIGHT=150>
</APPLET>
</HTML>
set CLASSPATH=
C:\j2sdk1.4.2_04\bin\appletviewer Index.html
import java.awt.*;
import java.applet.*;
2) Los demás pasos ya son los mismos del ejemplo del PRIMER APPLET sólo
que en en archivo “Index.html” el tamaño de la ventana pondremos
WIDTH=500 HEIGHT=200; mientras que el archivo “Visualizar.bat” es
exactamente igual.
Figura 7.3
Luego en el ventana que sale, se debe rellenar todos los datos que se
muestran en la Figura 7.4, en realidad en esta ventana existen 4 pasos pero
que por ahora no es necesario cambiar nada de los demás pasos es por eso
que defrente haremos clic en el botón “Finalizar” para crear el applet.
Figura 7.5
3) Ahora estamos listos para diseñar nuestro applet, para ello en el código
generado por el JBuilder heremos lo siguiente:
- Dentro del método jbInit() agregamos código de tal manera que el método
debe quedar de la siguiente manera:
private void jbInit() throws Exception {
this.setBackground(new Color(255,255,220)); //Color de fondo
}
Figura 7.6
Figura 7.7
Figura 7.9
Figura 7.10
set CLASSPATH=
C:\JBuilder9\jdk1.4\bin\appletviewer Index.html
Figura 7.11
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
//Construir el applet
public Colores() {
}
//Inicializar el applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Inicialización de componentes
private void jbInit() throws Exception {
label1.setFont(new java.awt.Font("SansSerif", 1, 16));
label1.setText("Color de Texto");
label1.setBounds(new Rectangle(17, 24, 112, 26));
this.setBackground(new Color(184, 255, 255));
this.setLayout(null);
textField1.setFont(new java.awt.Font("SansSerif", 1, 40));
textField1.setForeground(Color.yellow);
textField1.setText("Universidad Continental");
textField1.setBounds(new Rectangle(17, 51, 459, 59));
label2.setFont(new java.awt.Font("SansSerif", 1, 16));
label2.setText("Seleccione color");
label2.setBounds(new Rectangle(18, 118, 139, 31));
checkbox1.setCheckboxGroup(checkboxGroup1);
checkbox1.setLabel("Amarillo");
checkbox1.setBounds(new Rectangle(166, 126, 97, 21));
checkbox1.addItemListener(new Colores_checkbox1_itemAdapter(this));
checkbox2.setCheckboxGroup(checkboxGroup1);
checkbox2.setLabel("Verde");
checkbox2.setLocale(java.util.Locale.getDefault());
checkbox2.setBounds(new Rectangle(166, 151, 97, 21));
checkbox2.addItemListener(new Colores_checkbox2_itemAdapter(this));
checkbox3.setCheckboxGroup(checkboxGroup1);
checkbox3.setLabel("Rojo");
checkbox3.setBounds(new Rectangle(166, 175, 97, 21));
checkbox3.addItemListener(new Colores_checkbox3_itemAdapter(this));
checkboxGroup1.setSelectedCheckbox(checkbox1);
button1.setLabel("UCCI");
button1.setBounds(new Rectangle(111, 260, 115, 29));
button1.addActionListener(new SaltaUCCI());
void checkbox1_itemStateChanged(ItemEvent e) {
cambiarColor();
}
void checkbox2_itemStateChanged(ItemEvent e) {
cambiarColor();
}
void checkbox3_itemStateChanged(ItemEvent e) {
cambiarColor();
}
Colores_checkbox1_itemAdapter(Colores adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.checkbox1_itemStateChanged(e);
}
}
Colores_checkbox2_itemAdapter(Colores adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.checkbox2_itemStateChanged(e);
}
}
Colores_checkbox3_itemAdapter(Colores adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.checkbox3_itemStateChanged(e);
}
}
set CLASSPATH=
C:\JBuilder9\jdk1.4\bin\appletviewer Index.html
Para poder ver toda la potencia de los applets con Java y todo lo que se puede
hacer con applets ingrese a la siguiente dirección electrónica
http://www.htmlpoint.com (haga clic en la opción 500 applet Java) en el cual
encontrará muchos diseños de applets que le serán de mucha utilidad.
Figura 7.12
package paqueteRaton;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
//Construir el applet
public RatonApplet() {
}
//Inicializar el applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Inicialización de componentes
private void jbInit() throws Exception {
setBackground(new Color(184, 255, 255));
addMouseListener(this);
}
g.setColor(new Color(rojo,verde,azul));
g.fillOval(ev.getX()-radio, ev.getY()-radio, 2*radio, 2*radio);
g.dispose();
}
public void mouseExited(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
La creación del archivo JAR y HTLM tiene que hacerlo usted mismo (vea
ítem 7.3).
2) Ejemplo de hacer clic con el mouse y se dibuja un círuclo, pero ahora los
círculos salen de diferentes colores al azar. Para ello crearemos el proyecto
“Raton1” y luego creamos un applet (ver Figura 7.13) con el nombre del
paquete “paqueteRaton1” y el nombre de la clase “Raton1Applet” y luego
ingresar el siguiente código:
Figura 7.13
package paqueteRaton1;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.Random;
//Construir el applet
public Raton1Applet() {
}
//Inicializar el applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Inicialización de componentes
private void jbInit() throws Exception {
setBackground(new Color(184, 255, 255));
addMouseListener(this);
}
g.setColor(new Color(rojo,verde,azul));
g.fillOval(ev.getX()-radio, ev.getY()-radio, 2*radio, 2*radio);
g.dispose();
}
public void mouseExited(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
La creación del archivo JAR y HTLM tiene que hacerlo usted mismo (vea
ítem 7.3).
3) Ejemplo dibujar con el ratón a mano alzada. Para ello crearemos el proyecto
“ManoAlzada” y luego creamos un applet (ver Figura 7.14) con el nombre del
paquete “paqueteManoAlzada” y el nombre de la clase “ManoAlzadaApplet” y
luego ingresar el siguiente código:
Figura 7.14
package paqueteManoAlzada;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
//Construir el applet
public ManoAlzadaApplet() {
}
//Inicialización de componentes
private void jbInit() throws Exception {
int ancho = Integer.parseInt(this.getParameter("WIDTH"));
int alto = Integer.parseInt(this.getParameter("HEIGHT"));
this.setSize(new Dimension(ancho,alto));
setBackground(Color.white);
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
//interface MouseListener
public void mousePressed(MouseEvent ev) {
uX=ev.getX();
uY=ev.getY();
}
//interface MouseMotionListener
public void mouseDragged(MouseEvent ev) {
int x = ev.getX();
int y = ev.getY();
Graphics g=getGraphics();
g.setColor(Color.red);
g.drawLine(uX, uY, x, y);
uX=x; uY=y;
g.dispose();
}
La creación del archivo JAR y HTLM tiene que hacerlo usted mismo (vea
ítem 7.3).
Para mostar esta posibilidad vamos a crear un applet para que cuando
pongamos nuestro nombre nos dé la bienvenida. Lo que haremos será pasarle
al applet el nombre de la persona a quien queremos darle la bienvenida. Para
ello crearemos el proyecto “Saludo” y luego creamos un applet (ver Figura 7.15)
con el nombre del paquete “paqueteSaludo” y el nombre de la clase
“SaludoApplet” y luego ingresar el siguiente código: (aunque parece muy
grande pero en realidad sólo se debe añadir el código que está enmarcando, ya
que como se sabe el JBuilder crea su propio código).
package paqueteSaludo;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
//Construir el applet
public SaludoApplet() {
}
//Inicializar el applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Inicialización de componentes
private void jbInit() throws Exception {
this.setBackground(new Color(255,255,220)); //Color de fondo
nombre = getParameter( "Nombre" );
}
Figura 7.15
Por supuesto, que puedes sustituir el nombre “Rubén” por el tuyo, sólo tienes
que cambiar en el parámetro VALUE en el archivo “Index.html”. Este cambio no
afectará al código Java, no será necesario recompilarlo para que te salude a ti
el applet.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
//Construir el applet
public BotonGraficoApplet() {
}
//Inicializar el applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Inicialización de componentes
private void jbInit() throws Exception {
String istr;
tracker = new MediaTracker( this );
return( true );
}
return( true );
}
return( true );
}
paint( g );
}