Sunteți pe pagina 1din 9

Estructura Jerárquica de las Java API

N El método paint(), es llamado cada


vez que se actualiza el contenido de
Object
una aplicación o un Applet. En caso
de no almacenar los elementos a
Color Component Graphics dibujar, esta información se perderá
al actualizar la ventana.
addMouseListener()
paint (Graphics g)
N Por otra parte, estas clases pueden
Button Container Label Canvas implementar distintos capturadores de
addActionListener()
eventos y actuar en base a ellos
sobrecargando los métodos
Panel Window ScrollPane involucrados. Por ejemplo, un Applet
puede implementar:
extends Applet
Applet Frame Dialog implements MouseListener

mouseClicked (MouseEvent e)
mouseReleased (MouseEvent e)
FileDialog mouseExited (MouseEvent e)
mouseEntered (MouseEvent e)
mousePressed (MouseEvent e)
Introducción a la Programación en Internet (José Manuel Gutiérrez, Univ. Cantabria) Julio, 2000, slide 1
Las Clases: Atributos y Métodos
N El método paint se puede sobrecargar drawString (string s, int x, int y)
tanto en un panel (asociado a un Applet) como drawLine (int x1, int y1, int x2, int y2)
en un Frame (asociado a una aplicación).
drawRect (int x, int y, int sx, int sy)
Este método actúa sobre un contexto drawOval (int x, int y, int sx, int sy)
gráfico permitiendo utilizar diversas fillOval, fillRect
primitivas gráficas.
clearRect (int x, int y, int sx, int sy)
<applet codebase=”Dibuja"
code=”Dibuja.class" Realizar este
width=300 height=300> </applet> ejercicio con
las primitivas
anteriores.
import java.applet.Applet;
import java.awt.*; También es
necesario
public class Dibuja extends Applet { obtener
public void paint(Graphics g) { información
g.setColor(Color.red); sobre Font
g.fillOval(115, 55, 40, 40);
} Ver detalles sobre la clase Graphics
} y Font en JavaTM 2 Platform,
Standard Edition API Specification
Introducción a la Programación en Internet (José Manuel Gutiérrez, Univ. Cantabria) Julio, 2000, slide 2
Solución del ejercicio anterior
import java.applet.Applet; Detalles de la clase Font
import java.awt.*;
Font(String fuente,
public class EjemploDraw extends Applet { int tipo,
Font f; int size)
public void paint(Graphics g) { fuente es la familia de
g.setColor(Color.blue); fuente “Times”
f = new Font("Times",Font.BOLD,18);
g.setFont(f); tipo es el estilo del texto
g.drawString("Ejemplo de Texto",50,20); Font.PLAIN, Font.BOLD,etc
g.setColor(Color.red); size es el tamaño de la
g.fillOval(115, 55, 40, 40); fuente.
g.drawLine(0,0,300,300);
g.drawRect(150,150,200,200); En GraphicsEnviroment se
g.fillRect(200,200,300,300); dispone de métodos para
f = new Font("Times",Font.ITALIC,36); obtener todos los tipos de
g.setFont(f); fuente disponible en el
g.setColor(Color.green); ordenador local.
g.drawString("Ejemplo de Texto",20,250);
} GraphicsEnvironment.
} getAllFonts()

Introducción a la Programación en Internet (José Manuel Gutiérrez, Univ. Cantabria) Julio, 2000, slide 3
Dibujando Círculos al Pulsar el Ratón
import java.applet.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;

public class CirculosRepaint extends Applet implements MouseListener{


Vector vector;

public void init() {


vector = new Vector();
addMouseListener(this);
}

public void paint(Graphics g) {


Point p;
int numFiguras;
numFiguras = vector.size();
g.setColor(Color.red);
for (int i = 0; i < numFiguras; i++) {
p=(Point)vector.elementAt(i);
g.fillOval(p.getX(),p.getY(),20,20);
}
}

public void mouseClicked (MouseEvent e){


vector.addElement(new Point(e.getX,e.getY()); public void mouseReleased (MouseEvent e){;}
repaint(); public void mouseExited (MouseEvent e){;}
} public void mouseEntered (MouseEvent e){;}
public void mousePressed (MouseEvent e){;}
}

Introducción a la Programación en Internet (José Manuel Gutiérrez, Univ. Cantabria) Julio, 2000, slide 4
Mejorando el ejemplo anterior
import java.applet.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;

public class CirculosRepaint extends Applet implements MouseListener{


Vector vectorFiguras;

public void init() {


vectorFiguras = new Vector();
addMouseListener(this);
}

public void paint(Graphics g) {


Circulo s;
int numFiguras;
numFiguras = vectorFiguras.size();
for (int i = 0; i < numFiguras; i++) {
s = (Circulo)vectorFiguras.elementAt(i);
s.draw(g);
}
}

public void mouseClicked (MouseEvent e){


Circulo s;
s = new Circulo(); class Circulo {
s.x = e.getX(); s.y = e.getY(); static public final int r = 20;
vectorFiguras.addElement(s); Color color= Color.red;
repaint(); int x;
} int y;

public void mouseReleased (MouseEvent e){;} void draw(Graphics g) {


public void mouseExited (MouseEvent e){;} g.setColor(color);
public void mouseEntered (MouseEvent e){;} g.fillOval(x-r,yr,2*r,2*r);
public void mousePressed (MouseEvent e){;} }
} }

Introducción a la Programación en Internet (José Manuel Gutiérrez, Univ. Cantabria) Julio, 2000, slide 5
Utilizando lienzos (Canvas) para dibujar
N Un lienzo permite establecer un área de dibujo Respecto al ejemplo anterior, se modifican
en una cierta región de la ventana. Para ello, la los métodos init() y mouseReleased().
clase Canvas utiliza los siguientes métodos:
Graphics gra1, gra2;
Canvas c = new Canvas();
Canvas c = new Canvas();
c.setBounds(0,0,150,150);
c.enable(); public void init() {
addMouseListener(this);
setLayout(null); c.addMouseListener(this);
add(c); c.setBounds(0,0,150,150);
c.enable();
setLayout(null);
add(c);
Se ha creado un lienzo que tiene su propio contexto gra1=c.getGraphics();
gráfico y tratamiento del evento MouseRelease. gra1.setColor(Color.red);
gra2=this.getGraphics();
gra2.setColor(Color.blue);
}

public void mouseReleased (MouseEvent e){


Circulo s;
s = new Circulo();
s.x = e.getX();
s.y = e.getY();
if (e.getComponent()==c)
s.draw(gra1);
else
s.draw(gra2);
}

Introducción a la Programación en Internet (José Manuel Gutiérrez, Univ. Cantabria) Julio, 2000, slide 6
Una Animacion Muy Simple
N Una forma simple de generar una animación en Java cuando se utilizan primitivas gráficas
es intercambiar los colores de fondo getBackground() y el color actual setColor() al dibujar .

En el ejemplo siguiente se muestra la animación de una bola que rebota en el borde.

import java.applet.*; class Circulo {


import java.awt.*; int x=0;int y=0;int vx=1;int vy=2;int r=10;
public class AnimaBola extends Applet { Color color = Color.blue;
Graphics g; public Circulo(int a, int b){x = a;y = b;}
Color cf; void draw(Graphics g){
int X,Y; g.setColor(cf);
Circulo s1; g.fillOval(x-r, y-r, 2*r, 2*r);
long time, lastTime=0; mueve();
public void init() { g.setColor(color);
g = this.getGraphics(); g.fillOval(x-r, y-r, 2*r, 2*r);
setVisible(true); }
cf = this.getBackground();
s1=new Circulo(100,50); void mueve(){
do{ if ((x+vx < r)||(x+vx > X-r)) vx*=-1;
X=(this.getBounds()).height; if ((y+vy < r)||(y+vy > Y-r)) vy*=-1;
Y=(this.getBounds()).width; x+=vx;y+=vy;
time = System.currentTimeMillis(); }
if(time-lastTime > 10) { }
s1.draw(g); }
lastTime = time;
}
}while(true);
}

Introducción a la Programación en Internet (José Manuel Gutiérrez, Univ. Cantabria) Julio, 2000, slide 7
Multimedia: Imágenes y Sonido
N Una forma más convencional de generar animaciones es mediante la superposición de
fotogramas (imágenes). La clase Applet incluye un método para la lectura de imágenes:
imagen = getImage(getDocumentBase(),"coche1.jpg");
De forma análoga se puede trabajar con sonidos: Carga de ficheros
sonido = getAudioClip(getDocumentBase(),"spacemusic.au”)

sonido.play();
g.drawImage(imagen,0,0,this); Reproducción

import java.awt.*;
import java.applet.*;
public class DrawImg extends Applet{
Image imagen;
AudioClip sonido;
public void init() {
imagen=getImage(getDocumentBase(),"coche1.jpg");
sonido=getAudioClip(getDocumentBase(),"spacemusic.au");
sonido.play();
}
public void paint(Graphics g) {
g.drawImage(imagen,0,0,this);
}
}

Introducción a la Programación en Internet (José Manuel Gutiérrez, Univ. Cantabria) Julio, 2000, slide 8
Práctica de Control Multimedia
import java.awt.*;
import java.applet.*; A partir del ejemplo anterior,
import java.awt.event.*; añadir un par de botones que
public class DrawImg extends Applet implements ActionListener{
Image imagen,imagen1; controlen:
AudioClip sonido;
int actual=0; - La reproducción de sonido
public void init() {
setLayout(new BorderLayout()); y
Panel buttons=new Panel();
Button playButton= new Button("Reproducir"); - La alternancia entre dos
Button chgButton= new Button("Imagen");
imagen=getImage(getDocumentBase(),"coche1.jpg"); imágenes distintas.
imagen1=getImage(getDocumentBase(),"coche2.jpg");
sonido = getAudioClip(getDocumentBase(),"spacemusic.au");
playButton.addActionListener(this);
chgButton.addActionListener(this);
buttons.add(playButton);
buttons.add(chgButton);
add("South",buttons);
}
public void paint(Graphics g) {
if(actual%2==0) g.drawImage(imagen,0,0,this);
else g.drawImage(imagen1,0,0,this);
}
public void actionPerformed(ActionEvent e){
String s=e.getActionCommand();
if("Reproducir".equals(s)) sonido.play();
else if("Imagen".equals(s)) {actual++;repaint();}
}
}

Introducción a la Programación en Internet (José Manuel Gutiérrez, Univ. Cantabria) Julio, 2000, slide 9

S-ar putea să vă placă și