 |
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
}
}
}
}
|
 |