PDF de programación - Introduccion a AWT

Imágen de pdf Introduccion a AWT

Introduccion a AWTgráfica de visualizaciones

Publicado el 23 de Enero del 2021
495 visualizaciones desde el 23 de Enero del 2021
275,8 KB
60 paginas
Creado hace 18a (23/04/2006)
AWT

Técnicas de Programación
Curso 2005/06

Santiago Pavón – UPM
V:060.423

Técnicas de Programación

¿Qué es java.awt?
Contiene clases para crear GUIs.
Historia
Los interfaces de usuario se crean empleando
clases que representan componentes:
botones, ventanas, etc.
Existen componentes de tipo contenedor.
Contienen a otros componentes
Usan gestores de geometría
Los componentes producen eventos
provocan la ejecución de ciertos métodos en las clases

escuchadores.

Técnicas de Programación

1

Pasos para crear un GUI
1. El área donde crearemos el UI será el proporcionado por

un contenedor, y que inicialmente será una ventana.
2. Definir el gestor de geometría que usaremos para el

contenedor. Decidirá como se visualizan los componentes
dentro del contenedor.

3. Crear los componentes que irán dentro del contenedor.
4. Añadir (visualizar) los componentes dentro del contenedor.
5. Enlazar con los escuchadores de eventos.
6. Si los componentes que creamos son contenedores se

repite el ciclo otra vez.

Derivar para cambiar comportamiento por defecto.

Técnicas de Programación

Métodos para repintar
Los componentes muestran un contenido gráfico
que es necesario repintar en determinadas
ocasiones.
paint(Graphics g)
Contiene el código para pintar.
update(Graphics g)
Borra el componente y lo repinta (llama a paint).
Puede redefinirse para invocar sólo a paint, sin borrar

previamente, evitando así parpadeos.

repaint()
Repintar el componente.
Es el método normal a invocar por los demás métodos

de la clase.

Llama a update.
Son métodos heredados de Component.

Técnicas de Programación

2

Repintado automático

La mayoría de los componentes se
repintan solos automáticamente.

Lo que no se repinte solo, lo debemos
repintar escribiendo el código necesario
dentro del método paint del
componente.
por ejemplo: decoración incluida por nosotros

Técnicas de Programación

Ejemplo creación GUI

Técnicas de Programación

3

Ejemplo creación GUI

public static void main(String[]a) {

Frame f = new Frame("Ejemplo");
Main p = new Main();
f.add(p);
f.pack();
f.setVisible(true);

}

Técnicas de Programación

Ejemplo creación GUI

public class Main extends Panel {

public Main() {

?????

}

/** Pinta el borde rojo. */
public void paint(Graphics g) {

??????

}

}

Técnicas de Programación

4

Ejemplo creación GUI

public Main() {

// Definir gestor de geometria.
setLayout(new BorderLayout(5,5));

Label l = new Label("Ejemplo"); // Crear etiqueta
Button b = new Button("Pulsame 2");// Crear boton
FotoSPane fp = new FotoSPane(); // Crear panel

// Visualizar componentes.
add("North",l);
add("South",b);
add("Center",fp);

// Registrar escuchador.
b.addActionListener(new Mensaje(fp,Color.yellow));

Técnicas de Programación

Ejemplo creación GUI
// Repetir el proceso para el contenedor fp.

Button b2 = new Button("pulsa");
fp.add(b2);
b2.addActionListener(new
Mensaje(fp,Color.red));

}

Técnicas de Programación

5

Ejemplo creación GUI

/** Pinta el borde rojo. */
public void paint(Graphics g) {

g.setColor(Color.red);
g.drawRect(5,5,290,290);

}

Técnicas de Programación

java.awt.Graphics

Técnicas de Programación

6

La clase java.awt.Graphics
Proporciona métodos para dibujar figuras,
fonts, imágenes, etc.
Representa el contexto gráfico de un
componente o imagen.

Técnicas de Programación

Ejemplo

Técnicas de Programación

7

Código del ejemplo
public void paint(Graphics g) {

g.setColor(Color.green);
g.drawLine(25,25,275,25);

g.setColor(Color.red);
g.drawRect(25,50,50,75);
g.fill3DRect(100,50,50,50,true);
g.drawOval(175,50,50,50);

Técnicas de Programación

Código del ejemplo
GraphicsEnvironment ge =
GraphicsEnvironment.

getLocalGraphicsEnvironment();

String[] fonts =

ge.getAvailableFontFamilyNames();

g.setFont(new Font(fonts[0],Font.PLAIN,12));
g.drawString("Ejemplo",100,125);

g.setFont(new Font(fonts[0],Font.BOLD,14));
g.drawString("Ejemplo",200,125);

Técnicas de Programación

8

Código del ejemplo

g.setColor(Color.blue);
int x[] = {250,275,300,325,350,375,400};
int y[] = { 75, 50, 75, 50, 75, 50, 75};
g.drawPolygon(x,y,6);

}

Técnicas de Programación

Métodos
Líneas:
void drawLine(int x1, int y1, int x2, int y2);
Rectángulos:
void drawRect(int x, int y, int width, int height);
void fillRect(int x, int y, int width, int height);
void clearRect(int x, int y, int width, int height);
void draw3dRect(int x, int y, int width, int height,

void drawRoundRect(int x, int y, int width, int height,

int arcWidth, int arcHeight);
void fillRoundRect(int x, int y, int width, int height,

int arcWidth, int arcHeight);

void fill3dRect(int x, int y, int width, int height,

boolean raised);

boolean raised);

Técnicas de Programación

9

Métodos (2)
Elipses:
void drawOval(int x, int y, int width, int height);
void fillOval(int x, int y, int width, int height);
Texto:
void drawString(String str, int x, int y);
void drawChars(char charArray[], int offset,
int numChars, int x, int y);
void drawBytes(byte byteArray[], int offset,

int numChars, int x, int y)

Polígonos:
void drawPolygon(int[] xPoints, int[] yPoints,

void drawPolygon(Polygon p);

int numPoints);

Técnicas de Programación

Métodos (3)
Imágenes:
boolean drawImage(Image img, int x, int y,

ImageObserver observer);

boolean drawImage(Image img, int x, int y, int width, int height,

boolean drawImage(Image img, int x, int y,

ImageObserver observer);

boolean drawImage(Image img, int x, int y, int width, int height,

Color bg, ImageObserver ob);

Color bg, ImageObserver ob);

boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2,

int sx1, int sy1, int sx2, int sy2, Color bg,
ImageObserver ob);

boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2,

int sx1, int sy1, int sx2, int sy2,
ImageObserver ob);

Técnicas de Programación

10

Métodos (4)
Color: setColor(Color c);

Modos de dibujar:
Modo Paint:setPaintMode();
Modo XOR: setXORMode(Color color);

Limitar zona de dibujo:
Reducir zona de pintado actual:

void clipRect(int x, int y, int width, int height);

Establecer zona de pintado:

void setClip(int x, int y, int width, int height);

Consultar zona actual:

Rectangle getClipBounds();

Técnicas de Programación

La clase Polygon
Constructores:
A partir de array de coordenadas:

Polygon(int[] xPoints, int[] yPoints, int numPoints);

Creando polígono vacio y añadiendo puntos:

Polygon();
void addPoint(int x, int y);

Métodos:
Rectángulo que lo abarca:

Rectangle getBounds();
Contiene un punto:

boolean contains(int x, int y);

Técnicas de Programación

11

La clase Font
Constructor: Font(String fontName, int style, int size);
Ejemplo:

Font f = new Font("TimesRoman",Font.BOLD,12);

Constantes de estilo:

Font.PLAIN Font.BOLD Font.ITALIC

Pueden sumarse estas constantes al construir el font.
Métodos:

String getFamily();
String getName();
int getSize();
int getStyle();
boolean isBold();
boolean isItalic();
boolean isPlain();

Técnicas de Programación

La clase Font (2)
Métodos para obtener fonts instalados en el sistema:

static Font getFont(String property);
static Font getFont(String property, Font defaultValue);
Formato de la propiedad: font-style-pointsize
Ejemplo: TimesRoman-bold-16

La clase GraphicsEnvironment mantiene información
sobre los fonts instalados.
GraphicsEnvironment ge =

GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] fonts = ge.getAvailableFontFamilyNames();

Técnicas de Programación

12

La Clase FontMetrics
Métricas sobre fonts

Técnicas de Programación

La clase Point
Constructores:
Point();
Point(int x, int y);
Point(Point p);

Miembros:
int x;
int y;

Métodos:
void move(int newX, int newY);
void translate(int xChange, yChange);

Técnicas de Programación

13

La clase Dimension

Constructores:
Dimension();
Dimension(int width, int height);
Dimension(Dimension oldDimension);

Miembros:
int width;
int height;

Técnicas de Programación

La clase Rectangle
Constructores:
Rectangle(Point p, Dimension d);
Rectangle(int x, int y, int width, int height);
Rectangle(int width, int height);
Rectangle(Point p);
Rectangle(Dimension d);
Rectangle(Rectangle r);
Rectangle();

Miembros:
int x;
int y;
int width;
int height;

Técnicas de Programación

14

La clase Rectangle (2)
Métodos:
void move(int newX, int newY);
void translate(int xChange, yChange);
void setSize(int newWidth, int newHeight);
void grow(int widthChange, int heightChange);
void setBounds(int newX, int newY,

int newWidth, int newHeight);

boolean contains(int x, int y);
Rectangle intersection(Rectangle anotherRect);
boolean intersects(Rectangle anotherRect);
Rectangle union(Rectangle anotherRect);
void add(Point p);
void add(int x, int y);
void add(Rectangle anotherRect);
Técnicas de Programación

La clase Color
Constructores:

Color(int red, int green, int blue);
Color(int rgb);
Color(float red, float green, float blue);

Métodos:

int getRed();
int getGreen();
int getBlue();
Color darker();
Color brighter();

Técnicas de Programación

15

La clase Color (2)
Constantes:
Color.white
Color.lightGray
Color.gray
Color.darkGray
Color.black
Color.red
Color.pink
Color.orange
Color.yellow
Color.green
Color.magenta
Color.cyan
Color.blue

Técnicas de Programación

Doble Buffering

Técnicas de Programación

16

Doble Buffering
Objetivo: Evitar parpadeo en las animaciones.
El método update borra y repinta todo.
Si el tiempo en repintar es largo pueden notarse

parpadeos o ver como se construye la imagen.

Una solución:

No borrar todo antes de pintar, borrar y repintar sólo los

cambios.

Esto no siempre es aplicable, depende de lo que estemos

animando.

Doble Buffering:
La nueva imagen se construye en mem
  • Links de descarga
http://lwp-l.com/pdf18744

Comentarios de: Introduccion a AWT (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad