Ilustración de las fases de vida de un applet
||
CicloVidaApplet.java
import java.awt.Graphics;
import java.applet.Applet;
public class CicloVidaApplet extends Applet
{
int contadorInit = 0;
int contadorStart = 0;
int contadorPaint = 0;
int contadorStop = 0;
int contadorDestroy = 0;
public void init() {contadorInit++;}
public void start() {contadorStart++;}
public void paint(Graphics g)
{
contadorPaint++;
g.drawString("Contador Init: " + contadorInit, 25,25);
g.drawString("Contador Start: " + contadorStart, 25,50);
g.drawString("Contador Paint: " + contadorPaint, 25,75);
g.drawString("Contador Stop: " + contadorStop, 25,100);
g.drawString("Contador Destroy: " + contadorDestroy, 25,125);
}
public void stop() {contadorStop++;}
public void destroy() {contadorDestroy++;}
} ||
Clases para hacer gráficos sencillos. Colores.
||
CajasDeColores.java
Dibuja una serie de rectángulos y los rellena con colores de componentes RGB aleatorias
import java.awt.Graphics;
import java.awt.Color;
public class CajasDeColores extends java.applet.Applet
{
public void paint(Graphics g)
{
int rojo,verde,azul;
for (int j = 30; j < (size().height - 25); j += 30)
{
for (int i = 5; i < (size().width - 25); i += 30)
{
rojo = (int) Math.floor(Math.random() * 256);
verde = (int) Math.floor(Math.random() * 256);
azul = (int) Math.floor(Math.random() * 256);
g.setColor(new Color(rojo,verde,azul));
g.fillRect(i,j,25,25);
g.setColor(Color.black);
g.drawRect(i-1, j-1, 25, 25);
}
}
} } ||
Carga un sonido y lo interpreta
||
SonidoApplet.java
import java.applet.AudioClip;
public class SonidoApplet extends java.applet.Applet
{
AudioClip sonido;
public void init()
{
El fichero de sonido se llama 'yahoo.au' y esta en el directorio del fichero html
sonido = getAudioClip(getCodeBase(), "yahoo1.au");
}
public void start() {
sonido.loop();
}
public void stop()
{
sonido.stop();
}
} ||
[[http://www.unav.es/cti/manuales/Java/indice.html#inicio ]]
Cómo tratar los eventos
||
EjemploDeEventos.java
EVENTOS JDK 1.1.x
Muestra una ventana con 3 botones que cambian el color al pincharlos
import java.awt.*;
import java.awt.event.*;
class BotonesDeColores implements MouseListener, ActionListener
{
Declara los componentes que luego se usaran para crear la interfaz grafica
TextArea areaTexto;
Button boton1, boton2, boton3;
MenuBar barraMenu;
Menu menu1;
MenuItem opcionMenu1_1;
Label label1;
Panel panel1;
Constructor
public BotonesDeColores()
{
Frame f = new Frame();
f.setLayout(new BorderLayout());
Creo todos los objetos Componentes
panel1 = new Panel();
label1 = new Label("Normal");
boton1 = new Button("Rojo");
boton2 = new Button("Azul");
boton3 = new Button("Verde");
barraMenu = new MenuBar();
menu1 = new Menu("Archivo");
opcionMenu1_1 = new MenuItem("Salir");
areaTexto = new TextArea(15, 10);
areaTexto.setEditable(false);
Estructuro todos los componentes
panel1.add(boton1);
panel1.add(boton2);
panel1.add(boton3);
panel1.add(label1);
menu1.add(opcionMenu1_1);
barraMenu.add(menu1);
f.add("North", panel1);
f.add("South", areaTexto);
f.setMenuBar(barraMenu);
f.setSize(300,320);
f.setVisible(true);
Observador de areaTexto
areaTexto.addMouseListener(this);
Observador de label1
label1.addMouseListener(this);
Observador de los botones
boton1.addActionListener(this);
boton2.addActionListener(this);
boton3.addActionListener(this);
Observador de la opcion de menu
opcionMenu1_1.addActionListener(this);
}
Metodos del interfaz MouseListener
public void mouseClicked(MouseEvent e)
{
areaTexto.append("mouseClicked: x=" + e.getX() + ", y=" + e.getY() + "\n");
}
public void mouseEntered(MouseEvent e)
{
areaTexto.append("mouseEntered: x=" + e.getX() + ", y=" + e.getY() + "\n");
if (e.getComponent() label1)
{
label1.setText("CURSIVA");
label1.setBackground(Color.red);
areaTexto.setFont(new Font("TimesRoman", Font.ITALIC, 14));
}
}
public void mouseExited(MouseEvent e)
{
areaTexto.append("mouseExited: x=" + e.getX() + ", y=" + e.getY() + "\n");
if (e.getComponent()
label1)
{
label1.setText("Normal");
label1.setBackground(Color.white);
areaTexto.setFont(new Font("TimesRoman", Font.PLAIN, 14));
}
}
public void mousePressed(MouseEvent e)
{
areaTexto.append("mousePressed: x=" + e.getX() + ", y=" + e.getY() + "\n");
}
public void mouseReleased(MouseEvent e)
{
areaTexto.append("mouseReleased: x=" + e.getX() + ", y=" + e.getY() + "\n");
}
Metodos del interfaz ActionListener
public void actionPerformed(ActionEvent e)
{
String cadena = e.getActionCommand();
if (cadena.equals("Salir"))
{
System.exit(0);
}
else
{
cambiaColor(cadena);
}
}
Otros metodos
public void cambiaColor(String nombreColor)
{
if (nombreColor.equals("Rojo")) areaTexto.setBackground(Color.red);
else if (nombreColor.equals("Azul")) areaTexto.setBackground(Color.blue);
else if (nombreColor.equals("Verde")) areaTexto.setBackground(Color.green);
else if (nombreColor.equals("Amarillo")) areaTexto.setBackground(Color.yellow);
}
}
Metodo de entrada al programa. Es el primero que se ejecuta al lanzarlo
public class EjemploDeEventos
{
public static void main(String args[])
{
BotonesDeColores bdc = new BotonesDeColores();
}
} ||
[[http://www.unav.es/cti/manuales/Java/indice.html#inicio ]]
Control de eventos mediante clases internas
||
EjemploDeEventos2.java
EVENTOS JDK 1.1.x mediante clases internas
import java.awt.*;
import java.awt.event.*;
class BotonesDeColores
{
TextArea areaTexto;
Button boton1, boton2, boton3;
MenuBar barraMenu;
Menu menu1;
MenuItem opcionMenu1_1;
Label label1;
Panel panel1;
SymMouse aSymMouse;
SymAction aSymAction;
Constructor
public BotonesDeColores()
{
Frame f = new Frame();
f.setLayout(new BorderLayout());
Creo todos los objetos Componentes
panel1 = new Panel();
label1 = new Label("Normal");
boton1 = new Button("Rojo");
boton2 = new Button("Azul");
boton3 = new Button("Verde");
barraMenu = new MenuBar();
menu1 = new Menu("Archivo");
opcionMenu1_1 = new MenuItem("Salir");
areaTexto = new TextArea(15, 10);
areaTexto.setEditable(false);
Estructuro todos los componentes
panel1.add(boton1);
panel1.add(boton2);
panel1.add(boton3);
panel1.add(label1);
menu1.add(opcionMenu1_1);
barraMenu.add(menu1);
f.add("North", panel1);
f.add("South", areaTexto);
f.setMenuBar(barraMenu);
f.setSize(300,320);
f.setVisible(true);
aSymMouse = new SymMouse();
aSymAction = new SymAction();
Observador de areaTexto
areaTexto.addMouseListener(aSymMouse);
Observador de label1
label1.addMouseListener(aSymMouse);
Observador de los botones
boton1.addActionListener(aSymAction);
boton2.addActionListener(aSymAction);
boton3.addActionListener(aSymAction);
Observador de la opcion de menu
opcionMenu1_1.addActionListener(aSymAction);
}
Clase interna que controla los eventos de raton. Extiende de MouseAdapter que a su vez implementa el interfaz MouseListener
class SymMouse extends MouseAdapter
{
public void mouseClicked(MouseEvent event)
{
areaTexto.append("mouseClicked: x=" + event.getX() + ", y=" + event.getY() + "\n");
Object object = event.getSource();
if (object
boton1)
{
boton1_MouseClick(event);
areaTexto.append("\t boton1");
}
else if (object
boton2)
{
boton2_MouseClick(event);
areaTexto.append("\t boton2");
}
else if (object
boton3)
{
boton3_MouseClick(event);
areaTexto.append("\t boton3");
}
}
public void mouseEntered(MouseEvent e)
{
areaTexto.append("mouseEntered: x=" + e.getX() + ", y=" + e.getY() + "\n");
if (e.getComponent()
label1)
{
label1.setText("CURSIVA");
label1.setBackground(Color.red);
areaTexto.setFont(new Font("TimesRoman", Font.ITALIC, 14));
}
}
public void mouseExited(MouseEvent e)
{
areaTexto.append("mouseExited: x=" + e.getX() + ", y=" + e.getY() + "\n");
if (e.getComponent()
label1)
{
label1.setText("Normal");
label1.setBackground(Color.white);
areaTexto.setFont(new Font("TimesRoman", Font.PLAIN, 14));
}
}
public void mousePressed(MouseEvent e)
{
areaTexto.append("mousePressed: x=" + e.getX() + ", y=" + e.getY() + "\n");
}
public void mouseReleased(MouseEvent e)
{
areaTexto.append("mouseReleased: x=" + e.getX() + ", y=" + e.getY() + "\n");
}
} fin de la clase interna SymMouse
Clase interna que controla los eventos generales
class SymAction implements ActionListener
{
Metodos del interfaz ActionListener
public void actionPerformed(ActionEvent e)
{
String cadena = e.getActionCommand();
if (cadena.equals("Salir"))
{
System.exit(0);
}
else
{
cambiaColor(cadena);
}
}
} fin de la clase interna SymMouse
public void cambiaColor(String nombreColor)
{
if (nombreColor.equals("Rojo")) areaTexto.setBackground(Color.red);
else if (nombreColor.equals("Azul")) areaTexto.setBackground(Color.blue);
else if (nombreColor.equals("Verde")) areaTexto.setBackground(Color.green);
else if (nombreColor.equals("Amarillo")) areaTexto.setBackground(Color.yellow);
}
} fin de la clase BotonesDeColores
public class EjemploDeEventos2
{
public static void main(String args[])
{
new BotonesDeColores();
}
} ||
[[http://www.unav.es/cti/manuales/Java/indice.html#inicio ]]
Aplicación de los streams a la lectura y escritura en disco
|| EscribeEnDisco.java
import java.io.*;
public class EscribeEnDisco
{
public static void main(String args[])
{
FileOutputStream fos = null;
PrintWriter pw = null;
Crea el fichero para guardar los datos
File ficheroDeSalida = new File("c:/Javadir/historia", "salida.txt");
try
{
fos = new FileOutputStream(ficheroDeSalida);
} catch (IOException e)
{
System.out.println(e);
}
catch(SecurityException e)
{
System.out.println(e);
}
pw = new PrintWriter(fos);
Escribe una secuencia de texto en el fichero
for (int i = 0; i < 10; i++)
{
pw.println("Linea " + i + " " + System.currentTimeMillis());
}
Escribir realmente en el disco
pw.flush();
Cerrar Streams
try
{
fos.close();
} catch(IOException e)
{
System.out.println(e);
}
}
}
import java.io.*;
public class LeeDeDisco
{
public static void main(String args[])
{
FileInputStream fis = null;
BufferedReader br = null;
String linea;
File ficheroDeEntrada = new File("c:/Javadir/historia", "salida.txt");
try
{
fis = new FileInputStream(ficheroDeEntrada);
} catch (FileNotFoundException e)
{
System.out.println(e);
}
catch(SecurityException e)
{
System.out.println(e);
}
br = new BufferedReader(new InputStreamReader(fis));
while (true)
{
try
{
linea = br.readLine();
pw.flush();
} catch (UnknownHostException e)
{
System.err.println(e);
}
catch (IOException e)
{
System.err.println(e);
}
}
} ||
[[http://www.unav.es/cti/manuales/Java/indice.html#inicio ]]
Utilización de los sockets para mandar mensajes entre dos máquinas
|| Cliente.java
import java.io.*;
import java.net.*;
public class Cliente
{
public static void main(String args[])
{
Socket socketCliente = null;
InputStream is = null;
OutputStream os = null;
BufferedReader br;
PrintWriter pw = null;
try {
socketCliente = new Socket("",3000); dirIP y port
System.out.println("Me he conectado con el servidor!");
Recibe texto de bienvenida
is = socketCliente.getInputStream( );
os = socketCliente.getOutputStream();
pw = new PrintWriter(os);
br = new BufferedReader(new InputStreamReader(is));
while (true)
{
if (is.available() != 0)
{
System.out.println(is.available());
System.out.println("El servidor me envia este mensaje: " + br.readLine());
}
}
pw.println("¿Que tal? Soy un cliente");
pw.flush();
} catch (UnknownHostException e)
{
System.err.println(e);
}
catch (IOException e)
{
System.err.println(e);
}
}
}
Servidor.java
import java.io.*;
import java.net.*;
public class Servidor
{
Constructor
public Servidor( )
{
super( );
}
public static void main(String args[])
{
int numeroDePuerto = 3000;
ServerSocket socketServidor = null;
OutputStream os = null;
InputStream is = null;
PrintWriter pw = null;
BufferedReader br;
try {
socketServidor = new ServerSocket(numeroDePuerto);
System.out.println("Servidor creado. Esperando conexion de clientes...");
} catch (IOException e)
{
System.err.println(e);
}
int contador = 0;
while (true)
{
try
{
Socket socketCliente = socketServidor.accept( );
System.out.println("He aceptado otro socket cliente");
System.out.println("Ya se han conectado " + ++contador + " clientes");
Envia texto de bienvenida
os = socketCliente.getOutputStream();
pw = new PrintWriter(os);
is = socketCliente.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
pw.println("HOLA. Bienvenido al servidor !");
pw.flush();
System.out.println("El cliente me envia este mensaje: " + br.readLine());
} catch (IOException e)
{
System.err.println(e);
}
}
}
} ||
[[http://www.unav.es/cti/manuales/Java/indice.html#inicio ]]
Muestra una página web dentro de un applet
|| CargaPaginaWeb.java
import java.net.*;
public class CargaPaginaWeb extends java.applet.Applet
{
public void init()
{
URL direccionURL = null;
try
{
direccionURL = new URL("http://www.yahoo.com/");
} catch(MalformedURLException e)
{
System.out.println(e);
}
getAppletContext().showDocument(direccionURL);
}
} ||
Carga la fuente de una pagina web en formato html y la muestra en pantalla
|| CargaOrigenDeURL.java
import java.io.*;
import java.net.URL;
public class CargaOrigenDeURL
{
Constructor
public CargaOrigenDeURL()
{
InputStream conn;
DataInputStream data;
String linea;
StringBuffer buferDeTexto = new StringBuffer();
URL direccionURL = null;
try
{
direccionURL = new URL("http://www.yahoo.com");
conn = direccionURL.openStream();
data = new DataInputStream(new BufferedInputStream(conn));
while ((linea = data.readLine()) != null)
{
buferDeTexto.append(linea + "\n");
}
System.out.println(buferDeTexto.toString());
} catch(IOException e) {}
}
public static void main(String args[])
{
new CargaOrigenDeURL();
}
} ||
[[http://www.unav.es/cti/manuales/Java/indice.html#inicio ]]