Categorías destacadas
programacion php    
Artículo
10
¡votar!

 Applets Java


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
      }
    }
  }
}
Publicado por:
Administrador
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon