/** * *Clase Dibujo *@author Diego del Valle *@author Diego Gonzalez */ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.awt.geom.*; /**Clase Dibujo que gestiona todo lo necesario para mostrar de forma grafica las acciones sobre las figuras */ public class Dibujo extends JPanel { /**Constructor de objeto Dibujo que otorgara todo lo necesario * para mostrar de forma grafica las acciones sobre las figuras */ Dibujo() { super(); //formas = new Circulo(new Point(0,0),0); formas = new ArrayList(); num_cliente = 0; } /**Metodo paint que permite actualizar cambios hecho en figuras del panel *@param g Parametro Graphics que permite dibujar figura en pantalla */ public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d=(Graphics2D) g; for (int i = 0; i < servidores; i++) ((Circulo)formas.get(i)).paintComponent(g2d); if (up) { g2d.draw(superior); g2d.fill(superior); } if (down) { g2d.draw(inferior); g2d.fill(inferior); } if (left) { g2d.draw(izquierdo); g2d.fill(izquierdo); } if (right) { g2d.draw(derecho); g2d.fill(derecho); } } /**Metodo que permite modificar parametros de figuras a dibujar en pantalla *@param width_size tamano de la ventana del cliente *@param heigth_size tamano de la ventana del cliente *@param up flag que permite dibujar borde superior de ventana *@param down flag que permite dibujar borde inferior de ventana *@param left flag que permite dibujar borde izquierdo de ventana *@param right flag que permite dibujar borde derecho de ventana *@param servidores numero de servidores que envian datos */ public void modify(int width_size, int heigth_size, boolean up, boolean down, boolean left, boolean right, int servidores) { this.width_size = width_size; this.heigth_size = heigth_size; this.up = up; this.down = down; this.left = left; this.right = right; this.servidores = servidores; for (int i = 0; i < servidores; i++) { formas.add(new Circulo(new Point(0,0),0)); } System.out.println(up+ " " + down + " " + left + " " + right); izquierdo = new Rectangle2D.Double( 0 , 0, ANCHO, this.heigth_size); superior = new Rectangle2D.Double( 0 , 0, this.width_size , ANCHO); inferior = new Rectangle2D.Double( 0 , this.heigth_size - ANCHO, this.width_size , ANCHO);// this.heigth_size - ANCHO*7 derecho = new Rectangle2D.Double( this.width_size - ANCHO , 0, ANCHO , this.heigth_size); // this.width_size - ANCHO*3 } /**Metodo que modifica flag de bordes de ventana *@param up flag que especifica borde de arriba de la ventana *@param down flag que especifica borde de abajo de la ventana *@param left flag que especifica borde de izquierda de la ventana *@param rigt flag que especifica borde de derecha de la ventana */ public void modify(boolean up, boolean down, boolean left, boolean rigth) { this.up = up; this.down = down; this.left = left; this.right = rigth; repaint(); } /**Metodo que permite modificar parametros de figuras a dibujar en pantalla *@param width parametro que modifica la coordenda horizontal de la figura *@param heigth parametro que modifica la coordenada vertical de la figura *@param circulos figura a la que se modificara los datos */ public void modify(int width, int heigth, int circulos) { ((Circulo)formas.get(circulos)).modify(width, heigth); repaint(); } /**Metodo que modifica el identificador de cliente *@param client identificador de cliente para posicionar en mapa */ public void setNumClient(int client) { num_cliente = client; } //atributos publicos /* Util para acciones sobre figuras */ private static final int NOENCONTRADO=100; private static final double ANCHO = 5, LARGO = 315, ALTO =260; //atributos privados /* utiles para acciones sobre figuras */ private ArrayList formas; private Rectangle2D.Double superior, inferior, izquierdo, derecho; private int num_cliente; private int width_size; private int heigth_size; private boolean up, down, left, right; private int servidores; }