El usuario debe introducir también un conjunto de coordenadas además del radio. Después dibuje el círculo y muestre 
su diámetro, circunferencia y área, mediante el uso de un objeto 

Ellipse2D.Double

 para representar el círculo y el 

método

draw

 de la clase 

Graphics2D

para mostrarlo en pantalla.

12.18 

(Protector de pantalla)  Escriba una aplicación que simule un protector de pantalla. La aplicación deberá dibujar 

líneas al azar, utilizando el método 

drawLine

 de la clase 

Graphics

. Después de dibujar 100 líneas, la aplicación deberá 

borrarse a sí misma y empezar a dibujar líneas nuevamente. Para permitir al programa dibujar en forma continua, colo-
que una llamada a 

repaint

 como la última línea en el método 

paintComponent

. ¿Observó algún problema con esto en 

su sistema?

12.19 

(Protector de pantalla mediante el uso de 

Timer

) El paquete 

javax.swing

 contiene una clase llamada 

Timer

, la 

cual es capaz de llamar al método 

actionPerformed

 de la interfaz 

ActionListener

 durante un intervalo de tiempo 

fi jo (especifi cado en milisegundos). Modifi que su solución al ejercicio 12.18 para eliminar la llamada a 

repaint

 desde 

el método 

paintComponent

. Declare su clase de manera que implemente a 

ActionListener

. (El método 

actionPer-

formed

 deberá simplemente llamar a 

repaint

). Declare una variable de instancia de tipo 

Timer

, llamada 

temporiza-

dor

, en su clase. En el constructor para su clase, escriba las siguientes instrucciones:

temporizador = 

new

 Timer( 

1000

,

this

 );

temporizador.start();

Esto crea una instancia de la clase 

Timer

 que llamará al método 

actionPerformed

 del objeto 

this

 cada 1000 milise-

gundos (es decir, cada segundo).

12.20

(Protector de pantalla para un número aleatorio de líneas)  Modifi que su solución al ejercicio 12.19 para permitir 

al usuario introducir el número de líneas aleatorias que deben dibujarse antes de que la aplicación se borre a sí misma 
y empiece a dibujar líneas otra vez. Use un objeto 

JTextField

 para obtener el valor. El usuario deberá ser capaz de 

escribir un nuevo número en el objeto 

JTextField

 en cualquier momento durante la ejecución del programa. Use una 

clase interna para realizar el manejo de eventos para el objeto 

JTextField

.

12.21

(Protector de pantalla con fi guras)  Modifi que su solución al ejercicio 12.19, de tal forma que utilice la genera-

ción de números aleatorios para seleccionar diferentes fi guras a mostrar. Use métodos de la clase 

Graphics

.

12.22

(Protector de pantalla mediante el uso de la API Java 2D)  Modifi que su solución al ejercicio 12.21 para utilizar 

clases y herramientas de dibujo de la API Java 2D. Para las fi guras como rectángulos y elipses, dibújelas con degradados 
generados al azar. Use la clase 

GradientPaint

 para generar el degradado.

12.23

(Gráfi cos de tortuga)  Modifi que su solución al ejercicio 7.21 (Gráfi cos de tortuga) para agregar una interfaz 

gráfi ca de usuario, mediante el uso de objetos 

JTextField

 y 

JButton

. Dibuje líneas en vez de asteriscos (*). Cuando el 

programa de gráfi cos de tortuga especifi que un movimiento, traduzca el número de posiciones en un número de píxeles 
en la pantalla, multiplicando el número de posiciones por 10 (o cualquier valor que usted elija). Implemente el dibujo 
con características de la API Java 2D.

12.24

(Paseo del caballo)  Produzca una versión gráfi ca del problema del Paseo del caballo (ejercicios 7.22, 7.23 y 

7.26). A medida que se realice cada movimiento, la celda apropiada del tablero de ajedrez deberá actualizarse con el 
número de movimiento apropiado. Si el resultado del programa es un 

paseo completo o un paseo cerrado, el programa 

deberá mostrar un mensaje apropiado. Si lo desea, puede utilizar la clase 

Timer

 (vea el ejercicio 12.19) para que le ayude 

con la animación del Paseo del caballo.

12.25

(

La tortuga y la liebre)  Produzca una versión gráfi ca de la simulación La tortuga y la liebre (ejercicio 7.28). 

Simule la montaña dibujando un arco que se extienda desde la esquina inferior izquierda de la ventana, hasta la esqui-
na superior derecha. La tortuga y la liebre deberán correr hacia arriba de la montaña. Implemente la salida gráfi ca de 
manera que la tortuga y la liebre se impriman en el arco, en cada movimiento. [

Nota: extienda la longitud de la carrera 

de 70 a 300, para que cuente con un área de gráfi cos más grande].

12.26

(Dibujo de espirales)  Escriba un programa que utilice el método 

drawPolyline

 de 

Graphics

para dibujar una 

espiral similar a la de la fi gura 12.33.

12.27

(Gráfi co de pastel)  Escriba un programa que reciba como entrada cuatro números y que los grafi que en forma 

de gráfi co de pastel. Use la clase 

Arc2D.Double

 y el método 

fill

 de la clase 

Graphics2D

 para realizar el dibujo. Dibuje 

cada pieza del pastel en un color distinto.

12.28

(Selección de fi guras)  Escriba una aplicación que permita al usuario seleccionar una fi gura de un objeto 

JCombo-

Box

 y que la dibuje 20 veces, con ubicaciones y medidas aleatorias en el método 

paintComponent

. El primer elemento 

en el objeto 

JComboBox

 debe ser la fi gura predeterminada a mostrar la primera vez que se hace una llamada a 

paint-

Component

.

Ejercicios

575

12_MAQ_CAP_12_DEITEL.indd575

4/19/081:27:08AM