Estoy tratando de implementar una clase que me grafique diferentes señales; hasta ahora la clase grafica varias señales, la inquitud está es en borrar una de ellas.
Mi clase borra, pero deja vestigios de la señal que recien fue borrada u ocultada...
Pongo el código de mi clase para que por favor si pueden me ayuden... aclarar..
Código Java:
Ver original
private int numVble; private Vector<Color> cVector = new Vector<Color>(); //Vector de Color de la Variable private Vector<String> nVector = new Vector<String>(); //Vector de Nombre de la Variable private Vector<Graphics2D> gVector = new Vector<Graphics2D>();//Vector de Graphic de la Variable private Vector<Double> xMin = new Vector<Double>();//Vector de Valor Mínimo del Arreglo de X de la Variable private Vector<Double> yMin = new Vector<Double>();//Vector de Valor Mínimo del Arreglo de Y de la Variable private Vector<Double> xMax = new Vector<Double>();//Vector de Valor Máximo del Arreglo de X de la Variable private Vector<Double> yMax = new Vector<Double>();//Vector de Valor Máximo del Arreglo de Y de la Variable private Vector<Float> dVector = new Vector<Float>();//Vector de Espesor de la Variable private int PosX, PosY, Largo, Ancho; Canvas Lienzo; private double MaxX, MinX, MaxY, MinY; //Almacena Máximos y Mínimos de Coordenadas X y Y Graficar(int xPos, int yPos, int xWidth, int yLarge){ numVble = 0; setDimension(xWidth,yLarge); setPosition(xPos,yPos); } void setPosition(int xPos, int yPos) { //Asignar la posición del Lienzo PosX = xPos; PosY = yPos; Lienzo.setLocation(PosX, PosY); } void getPosition(int xPos, int yPos) { //Obtener la posición del Lienzo xPos = PosX; yPos = PosY; } void setDimension(int xWidth, int yLarge) { //Asignar la Dimensión del Lienzo Ancho = xWidth; Largo = yLarge; Lienzo.setSize(Ancho, Largo); } void getDimension(int xWidth, int yLarge) { //Obtener la Dimensión del Lienzo xWidth = Ancho; yLarge = Largo; } double getMax(double[] data){ //Obtener el valor MAYOR del Arreglo double Max = data[0]; for (int i=0;i<data.length;i++){ if (Max < data[i]) Max = data[i]; } return Max; } double getMin(double[] data){ //Obtener el valor MENOR del Arreglo double Min = data[0]; for (int i=0;i<data.length;i++){ if (Min > data[i]) Min = data[i]; } return Min; } double getMax(Vector<Double> data){ //Obtener el valor MAYOR del Vector double Max = data.elementAt(0); for (int i=0;i<data.size();i++){ if (Max < data.elementAt(i)) Max = data.elementAt(i); } return Max; } double getMin(Vector<Double> data){ //Obtener el valor MENOR del Vector double Min = data.elementAt(0); for (int i=0;i<data.size();i++){ if (Min > data.elementAt(i)) Min = data.elementAt(i); } return Min; } //Convierte los datos de double a Double para operar con Vectores for (int i=0;i<ddata.length;i++){ Ddata[i] = ddata[i]; } return Ddata; } //Restaura los datos de Double a double para operar con arreglos double[] ddata = new double[Ddata.length]; for (int i=0;i<Ddata.length;i++){ ddata[i] = Ddata[i]; } return ddata; } //Agrega una variable a Graficar, llamada nVble, de Color VbleColor y Grosor zDepth xMin.add(getMin(aX)); //Agrega el Mínimo valor del Arreglo aX al Vector xMin xMax.add(getMax(aX)); //Agrega el Máximo valor del Arreglo aX al Vector xMax yMin.add(getMin(aY)); //Agrega el Mínimo valor del Arreglo aY al Vector yMin yMax.add(getMax(aY)); //Agrega el Máximo valor del Arreglo aY al Vector yMin nVector.add(nVble); cVector.add(VbleColor); dVector.add(zDepth); gVector.add(g2); xVector.add(vX); yVector.add(vY); MinX = getMin(xMin); //Halla el Mínimo Valor de X, del Vector xMin MaxX = getMax(xMax); //Halla el Máximo Valor de X, del Vector xMax MinY = getMin(yMin); //Halla el Mínimo Valor de Y, del Vector yMin MaxY = getMax(yMax); //Halla el Máximo Valor de Y, del Vector yMax numVble += 1; return numVble; } int numVble() { //Retorna el número de variables que hay almacenadas return numVble; } //Elimina una variable a Graficar llamada nVble int Indice = nVector.indexOf(nVble); xMin.remove(Indice); //Borra el Mínimo valor de X del Vector xMin xMax.remove(Indice); //Borra el Máximo valor de X del Vector xMin yMin.remove(Indice); //Borra el Mínimo valor de Y del Vector yMin yMax.remove(Indice); //Borra el Máximo valor de Y del Vector yMin nVector.remove(Indice); cVector.remove(Indice); dVector.remove(Indice); gVector.remove(Indice); xVector.remove(Indice); yVector.remove(Indice); MinX = getMin(xMin); //Halla el Mínimo Valor de X, del Vector xMin MaxX = getMax(xMax); //Halla el Máximo Valor de X, del Vector xMax MinY = getMin(yMin); //Halla el Mínimo Valor de Y, del Vector yMin MaxY = getMax(yMax); //Halla el Máximo Valor de Y, del Vector yMax numVble -= 1; return numVble; } //Verifica si existe una Variable llamada nVble return nVector.contains(nVble); } void ViewAll(){ //Muestra todas las graficas almacenadas en los vectores for (int Indice = 0; Indice<nVector.size();Indice++){ grafica(Indice, "View"); } } void HideAll(){ //Oculta todas las graficas almacenadas en los vectores for (int Indice = 0; Indice<nVector.size();Indice++){ grafica(Indice, "Hide"); } } //Muestra la grafica de la Variable llamada nVble int Indice = nVector.indexOf(nVble); grafica(Indice, "View"); } //Oculta la grafica de la Variable llamada nVble int Indice = nVector.indexOf(nVble); grafica(Indice, "Hide"); } //Recarga una gráfica para mostrarla u ocultarla float zDepth = dVector.elementAt(Indice); double[] aX = Double_double(xVector.elementAt(Indice)); double[] aY = Double_double(yVector.elementAt(Indice)); g2.setColor(color); if (Oper.equals("Hide")){ g2.setXORMode(getBackground()); } if (Oper.equals("View")){ g2.setPaintMode(); } if (aX.length == 1){ g2.drawLine ((int)aX[0], (int)aX[0], (int)aY[0], (int)aY[0]); } else { for (int j = 0;j<aY.length-1;j++){ //g2.draw( new Line2D.Double((int)vX[i], (int)vX[i+1], (int)vY[i], (int)vY[i+1])); g2.drawLine ((int)aX[j], (int)aY[j], (int)aX[j+1], (int)aY[j+1]); } } repaint(); } //Retorna un vector con los nombres de las variables almacenadas for (int i = 0; i<nVector.size();i++){ Vbles[i] = nVector.elementAt(i); } return Vbles; } }