[código] Gráficos y Java2D (2)
(anterior) En esta sección de tratan los contextos y objetos gráficos; el dibujo de cadenas, caracteres y bytes; el control de color y tipo de letra; la manipulación de la pantallas, los modos de pantalla y el dibujo de lÃneas, rectángulos, rectángulos redondeados, rectángulos tridimensionales, óvalos, arcos y polÃgonos. Se presenta la API de Java2D, la cual ofrece poderosas herramientas para gráficos.
Uso de los tipos de letra (Font)

// Uso de los tipos de letra.
import java.awt.*;
import javax.swing.*;
public class TiposDeLetra extends JFrame {
// establecer barra de tÃtulo y dimensiones de la ventana
public TiposDeLetra()
{
super( "Uso de los tipos de letra" );
setSize( 450, 125 );
setVisible( true );
}
// mostrar cadenas en distintos tipos de letra y colores
public void paint( Graphics g )
{
// llamar al método paint de la superclase
super.paint( g );
// cambiar tipo de letra a Serif (Times), negrita, 12pts y dibujar una cadena
g.setFont( new Font( "Serif", Font.BOLD, 12 ) );
g.drawString( "Serif 12 puntos, negrita.", 20, 50 );
// cambiar tipo de letra a Monospaced (Courier), cursiva, 24pts y dibujar una cadena
g.setFont( new Font( "Monospaced", Font.ITALIC, 24 ) );
g.drawString( "Monospaced 24 puntos, cursiva.", 20, 70 );
// cambiar tipo de letra a SansSerif (Helvetica), simple, 14pts y dibujar una cadena
g.setFont( new Font( "SansSerif", Font.PLAIN, 14 ) );
g.drawString( "SansSerif 14 puntos, simple.", 20, 90 );
// cambiar tipo de letra a Serif (Times), negrita/cursiva, 18pts y dibujar una cadena
g.setColor( Color.RED );
g.setFont( new Font( "Serif", Font.BOLD + Font.ITALIC, 18 ) );
g.drawString( g.getFont().getName() + " " + g.getFont().getSize() +
" puntos, negrita cursiva.", 20, 110 );
} // fin del método paint
// ejecutar la aplicación
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
TiposDeLetra aplicacion = new TiposDeLetra();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase TiposDeLetra
Métodos de FontMetrics y Graphics útiles para obtener métrica de un tipo de letra

// Métodos de FontMetrics y Graphics útiles para obtener métrica de tipos de letra.
import java.awt.*;
import javax.swing.*;
public class Metrica extends JFrame {
// establecer cadena de la barra de tÃtulo y dimensiones de la ventana
public Metrica()
{
super( "Demostración de FontMetrics" );
setSize( 540, 210 );
setVisible( true );
}
// mostrar métrica del tipo de letra
public void paint( Graphics g )
{
super.paint( g ); // llamar al método paint de la superclase
g.setFont( new Font( "SansSerif", Font.BOLD, 12 ) );
FontMetrics metrica = g.getFontMetrics();
g.drawString( "Tipo de letra actual: " + g.getFont(), 10, 40 );
g.drawString( "Ascenso: " + metrica.getAscent(), 10, 55 );
g.drawString( "Descenso: " + metrica.getDescent(), 10, 70 );
g.drawString( "Altura: " + metrica.getHeight(), 10, 85 );
g.drawString( "Interlineado: " + metrica.getLeading(), 10, 100 );
Font font = new Font( "Serif", Font.ITALIC, 14 );
metrica = g.getFontMetrics( font );
g.setFont( font );
g.drawString( "Tipo de letra actual: " + font, 10, 130 );
g.drawString( "Ascenso: " + metrica.getAscent(), 10, 145 );
g.drawString( "Descenso: " + metrica.getDescent(), 10, 160 );
g.drawString( "Altura: " + metrica.getHeight(), 10, 175 );
g.drawString( "Interlineado: " + metrica.getLeading(), 10, 190 );
} // fin del método paint
// ejecutar la aplicación
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
Metrica aplicacion = new Metrica();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase Metrica
Dibujo de LÃneas, rectángulos y óvalos (drawLine, drawRect, drawRoundRect, drawOval)

// Dibujo de lÃneas, rectángulos y óvalos.
import java.awt.*;
import javax.swing.*;
public class LineasRectsOvalos extends JFrame {
// establecer la cadena de la barra de tÃtulo y dimensiones de la ventana
public LineasRectsOvalos()
{
super( "Dibujo de lÃneas, rectángulos y óvalos" );
setSize( 400, 165 );
setVisible( true );
}
// mostrar varias lÃneas, rectángulos y óvalos
public void paint( Graphics g )
{
super.paint( g ); // llamar al método paint de la superclase
g.setColor( Color.RED );
g.drawLine( 5, 30, 350, 30 );
g.setColor( Color.BLUE );
g.drawRect( 5, 40, 90, 55 );
g.fillRect( 100, 40, 90, 55 );
g.setColor( Color.CYAN );
g.fillRoundRect( 195, 40, 90, 55, 50, 50 );
g.drawRoundRect( 290, 40, 90, 55, 20, 20 );
g.setColor( Color.YELLOW );
g.draw3DRect( 5, 100, 90, 55, true );
g.fill3DRect( 100, 100, 90, 55, false );
g.setColor( Color.MAGENTA );
g.drawOval( 195, 100, 90, 55 );
g.fillOval( 290, 100, 90, 55 );
} // fin del método paint
// ejecutar la aplicación
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
LineasRectsOvalos aplicacion = new LineasRectsOvalos();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase LineasRectsOvalos









Jose Antonio Gomez Viraca dice:
Febrero 14th, 2008 a las 9:12 am
hola a todos disculpen que los moleste pero tengo una pregunta hacerca de trabajar el texto en java 2D, y es la siguiente:
como puedo mostrar un texto que este contenido en un rectangulo, de tal maneraque cuando el rectangulo se achique si el texto no cabe en el rectangulo muestre puntos.
es mas o menos asi:
****************
*Hola Como e…*
* *
****************
siendo esta la frace completa
*****************
*Hola como estas*
* *
*****************
trabajando con el TextLayout, pero no encuentro como hacerlo.
gracias de antemano.
Casidiablo dice:
Febrero 14th, 2008 a las 11:17 am
¿Estás trabajando con la clase Rectangle2D?
[p3ll3] dice:
Abril 28th, 2008 a las 10:32 pm
Men bastante buenos los codes , pero en el ultimo los graficos se borran cuando se termina el metodo paint(g).
Para corregir esto al final del codigo agreguen :
super.repaint();
y ya tienes los graficos fijos.
Saludos……..8 )
Casidiablo dice:
Abril 29th, 2008 a las 10:16 am
Muchas gracias por el aporte!