|
Applets Java
En esta p�gina:
Clase FontMetrics
Vamos a ver c�mo averiguar datos sobre el tipo de letra que se est�
utilizando en nuestro applet, principalmente para poder situarlo dentro
del applet con mayor precisi�n. FontMetrics fm = getFontMetrics(getFont());
La clase FontMetrics aporta
informaci�n sobre las dimensiones del tipo de letra. Dispone de muchos
m�todos, pero normalmente usaremos s�lo dos:
- int fm.getHeight()
- Devuelve la altura en pixels de un car�cter del tipo de letra
actual.
- int fm.stringWidth(String)
- Devuelve el ancho en pixels de una cadena escrito con el tipo de
letra actual.
Nos aprovecharemos de estas cositas para hacer que nuestro applet con
el texto desplaz�ndose coloque el texto en el centro del applet y nos
vuelva a mostrar el mismo por la derecha cuando salga por la
izquierda: MostrarCadena.java /**
* Applet MostrarCadena
*
* <APPLET CODE="MostrarCadena.class" WIDTH="200" HEIGHT="70">
* <PARAM NAME="Cadena" VALUE="Esto s� que es chulo">
* </APPLET>
*/
import java.applet.Applet;
import java.awt.*;
public class MostrarCadena extends Applet implements Runnable {
String mensaje;
int lugar, ancho, alto, anchoMensaje, ,altoMensaje;
Thread hilo = null;
Image buffer;
Graphics pantallaVirtual;
public void init() {
mensaje = getParameter("cadena");
if (mensaje==null)
mensaje = "Mensaje por defecto";
ancho = getBounds().width;
alto = getBounds().height;
lugar = ancho;
anchoMensaje = getFontMetrics().stringWidth(mensaje);
altoMensaje = (getFontMetrics().getHeight()+alto)/2;
buffer = createImage(ancho, alto);
pantallaVirtual = buffer.getGraphics();
}
public void start() {
if (hilo==null) {
hilo = new Thread(this);
hilo.start();
}
}
public void stop() {
hilo = null;
}
public void paint(Graphics g) {
g.drawString(mensaje,lugar,altoMensaje);
}
public void update(Graphics g) {
Color colorTemporal = pantallaVirtual.getColor();
pantallaVirtual.setColor(Color.white);
pantallaVirtual.fillRect(0, 0, ancho, alto);
pantallaVirtual.setColor(colorTemporal);
paint(pantallaVirtual);
g.drawImage(buffer, 0, 0, this);
}
public void run() {
while (hilo.isAlive()) {
lugar --;
if (lugar < (-anchoMensaje))
lugar = ancho;
repaint();
try {
hilo.sleep(10);
}
catch (InterruptedException e) { // No hacemos nada
}
}
}
}
|
|