Está en la página 1de 18

J2ME

 Clase para representar objetos


gráficos.
 Permite manejar eventos de bajo nivel
y dibujar cualquier tipo de elemento
grafico en pantalla.
 Capaz de mostrar información gráfica a
nivel de pixel (de ahí se deriva el “bajo
nivel”)
 Básicamente se pueden realizar 3
operaciones
 Dibujar primitivas gráficas.
 Commands (Alto nivel)

 Key Codes (Bajo nivel)


 0-9, *, #. (gestión de pulsación)
 Tecla↔ Numero simbólico.

 Métodos Abstractos(manejo de
teclas)
 Soporte de dispositivo puntero:
 boolean hasPointerEvents(): Posee?
 boolean hasPointerMotionEvents():
Detecta?

 Si
posee detección de eventos
(métodos abstractos):
 Una pantalla Canvas no posee la
capacidad por sí misma de restaurar su
estado en caso de interrumpirse la
ejecución de la aplicación para, por
ejemplo, avisar de una llamada
entrante.

 Respuesta:
 hideNotify(): antes de ocurrir el evento
(incluir código necesario para salvar la
información actual)
 Funciones del API de bajo nivel:
 Controlar los eventos de bajo nivel.
 Controlar qué aparece en pantalla.

 Gestión de dibujo en pantalla


 Método abstracto paint() de la clase
canvas.
 Para repintar, se llama al metodo
repaint().
 El MID no limpia la pantalla antes de llamar
a paint(): Es acción del paint() pintar cada
pixel.
 Pasada como parámetro de
paint(Graphics g).
 Permite dibujar en una pantalla
Canvas.
 Métodos de uso u obtención:
 Dentro del método paint() de la clase
Canvas.
 A partir de un objeto Image:
▪ Image img = Image.createImage(ancho,
alto);
▪ Graphics g = img.getGraphics();

 Canvas posee dos métodos:
 getWidth(): Obtiene ancho de la pantalla.
 getHeight(): Obtiene el alto de la pantalla.

 Posicion de puntos: (→,↓)


 Esquina superior izquierda: (0,0)
 Esquina inferior derecha (getWidth()-1,
getHeight()-1)

 Cambio de origen:
 Método translate(int x, int y) de la clase
Graphics.
 Existen dos métodos útiles:
 boolean Display.isColor(): true=color,
false=gris.
 int Display.numColors(): Numero de
colores o grises

 Modelode color de 24 bits en RGB


(Graphics)
 Método setColor()
▪ int Graphics.setColor(int RGB)
▪ int Graphics.setColor(int rojo, int verde, int azul)
->Max 255
▪ g.setColor(0,0,0); //Negro
 Permite seleccionar tipo de letra en función de 3
atributos: aspecto, estilo y tamaño
Fuentes disponibles Atributos
FACE_SYSTEM
Aspecto FACE_MONOSPACE
FACE_PROPORTIONAL
STYLE_PLAIN
STYLE_BOLD
Estilo
STYLE_ITALIC
STYLE_UNDERLINED
SIZE_SMALL
Tamaño SIZE_MEDIUM
SIZE_LARGE

Sintaxis: Font.getFont(int aspecto, int estilo, int


tamaño)
Graphics g;
Font fuente=Font.getFont(FACE_SYSTEM, STYLE_PLAIN,
SIZE_MEDIUM);
g.setFont(fuente);
g.drawString(“Hola mundo”, 23 , 45, BASELINE|HCENTER)
 Líneas
 g.drawLine(x1,y1,x2,y2); //Línea de (x1,y1) a
(x2,y2)
 Rectángulos
 Planos
▪ g.drawRect(x,y,ancho,alto); //sin relleno
▪ g.fillRect(x,y,ancho,alto); //con relleno
 Redondeados
▪ g.drawRoundRect(x,y,ancho,alto,arcoAncho,arcoAlto);
▪ g.fillRoundRect(x,y,ancho,alto,arcoAncho,arcoAlto);

 Arcos
 Simple: g.drawArc(x1,y1,x2,y2,ѳ°1, ѳ°2 );
 Relleno: g.fillArc(x1,y1,x2,y2,ѳ°1, ѳ°2 );
 Inmutables
 Image img = createImage(“foto.png”);
 Se crean a partir de un mapa de bits.
 No se puede variar su aspecto.

 Mutables
 Image img =
Image.createImage(75,25);
 Se trabaja sobre una matriz de puntos.
 Podemos crear, modificar, etc. La
imagen deseada

 Mostrar imagen
 Graphics.drawImage(imagen,x,y,punto
 Double buffering:
 Elimina el parpadeo al actualizar la
pantalla.
 Clave: actualizar las gráficas en
memoria principal y volcar a pantalla.
 boolean isDoubleBuffered()
▪ true: Dispositivo utiliza la técnica.
▪ false: Hay que implementar el double buffer.
1) Crear una imagen mutable del tamaño de la
pantalla
Image pantalla2;
if(!isBuffered()){
pantalla2=Image.createImage(getWidth(),
getHeight());
…}

2) Implementar paint(Graphics g)
adecuadamente
protected void paint(Graphics g){
Graphics pantalla1 = g;
g= pantalla.getGraphics();
//actualizar elementos gráficos sobre g …
//volcar a la pantalla para visualizar …
 Clipping
 Clave: Actualizar solo la parte que se haya
modificado.
 Se puede definir una región que limíte qué
parte de la pantalla se pintará al llamar a
paint()
▪ void setClip(int x, int y, int ancho, int alto)
 Solo puede existir una zona de clipping por
cada objeto Graphics.
 Otros métodos: