Escribir sobre un Canvas

Susana
15 de Junio del 2004
Hola, me gustaría saber como se puede escribir texto sobre un Canvas, pero no un texto de antemano, sino el que tu quieras. Muchas gracias

Jose Carlos
15 de Junio del 2004
Puedes ver la respuesta en el API de Java

http://java.sun.com/j2se/1.3/docs/api/

Canvas tiene tres métodos: addNotify, getAccesibleContent, y paint

el que más suena para pintar es "paint" que recibe como parámetro un objeto Graphics

Graphics a su vez tiene un monton de métoos, y entre ellos el método drawString, que recibe como parámetros un Stirng y dos coordenadas. Deberís por lo tanto:

Graphics g = new Graphics ( );
mi_canvas.paint ( g );
g.drawString ( StringConElTexto, POSICION_X_INICIO, POSICION_Y_INICIO );

podrás ademas cambiar el tipo de letra y el color que se representa dentro del canvas con métodos de la clase Graphics

por cierto, si no se pinta el texto es porque no se ha actualizado el Canvas. Para forzar que se actualice cuando tu quieras haz

mi_canvas.repaint ( );

y te mostrará el canvas y su contenido tal y como esté en ese momento.

Saludos

Susana
15 de Junio del 2004
Muchas gracias Jose, pero yo lo quería saber, es como puedo hacer, que sobre un canvas, se escriba de forma dinámica, no de forma estática, es decir, dar la oportunidad a un usuario de poner él sobre un canvas el texto que quiera.



Saludos

Jose Carlos
15 de Junio del 2004
otra cosa que se me ocurre:

podes facer tu propio "textField" a mano sobre el canvas. fijas un recuadro en el canvas y capturas eventos de teclado. cada vez que el usuario pulse con el raton en ese recuadro escuchas los eventos de teclado que aparezcan y escribes la tecla que pulse el usuario el canvas. El resultado será una especie de escritura dinámica en el Canvas... pero no es un desarrollo trivial

Susana
15 de Junio del 2004
Gracias Jose por tu ayuda. Voy a probarlo y ya te informaré del resultado final.

Saludos

Jose Carlos
15 de Junio del 2004
Vale :)

Pues además del Canvas, por un Panel en otro lado de la ventana, y sobre ese Panel coloca un TextField o un TextArea, junto con un boton de "Aceptar". Cuando pulse el botón capturas el evento y copias el contenido del TextField en el Canvas con lo que te he dicho :)

Ten en cuenta que un canvas es para dibujar, y no está pensado para escribir texto. Por lo tanto no podrás colocar nada para que escriba el usuario y vas a tener que hacerlo de forma indirecta :)

Espero haber resuelto tu duda. Si no es así no dudes en seguir preguntando :)

Saludos