El mensaje no tuvo respuesta... será porque el código es muy largo?
Voy a tratar de poner algo más entendible...
Le cambié el nombre a la clase... de Graficar a GTrama... para indicar que hereda de Frame
Código Java:
Ver originalclass GTrama
extends Frame { private Vector<Color> cVector = new Vector<Color>(); //Vector de Color de la Variable
private Vector<Boolean> vVector = new Vector<Boolean>(); //Vector de Visibilidad 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 []> xVector
= new Vector
<Double []>();//Vector de Arreglo de X de la Variable private Vector
<Double []> yVector
= new Vector
<Double []>();//Vector de Arreglo de Y 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;
String VbleX, VbleY
; //Agragar Nombre de Variables X y Y String TitleV, TitleH
; //Agrega Título Vertical(Izquierda) y Título Horizontal(Debajo) String TitleM, TitleS
; //Título Principal y Título Secundario private double MaxX, MinX, MaxY, MinY; //Almacena Máximos y Mínimos de Coordenadas X y Y
GTrama(int xPos, int yPos, int xWidth, int yLarge){
}
//Muestra todas las graficas almacenadas en los vectores
for (int Indice = 0; Indice<nVector.size();Indice++){
grafica(g, Indice, "View");
}
}
//Oculta todas las graficas almacenadas en los vectores
for (int Indice = 0; Indice<nVector.size();Indice++){
grafica(g, Indice, "Hide");
}
}
//Muestra la grafica de la Variable llamada nVble
if (!nVector.
contains(nVble
)) throw new RuntimeException("La Variable no existe"); int Indice = nVector.indexOf(nVble);
grafica(g, Indice, "View");
}
//Oculta la grafica de la Variable llamada nVble
if (!nVector.
contains(nVble
)) throw new RuntimeException("La Variable no existe"); int Indice = nVector.indexOf(nVble);
grafica(g, Indice, "Hide");
}
}
Como NO pude implementar un arreglo de tipo
double:
Código Java:
Ver originalprivate Vector<double []> xVector = new Vector<double []>();
private Vector<double []> yVector = new Vector<double []>();
Me tocó hacer un Vector de tipo arreglo de Objeto tipo
Double:
HE EXTRAIDO LOS MÉTODOS DE LA CLASE PARA EXPLICARLOS POR FUERA, PERO REALMENTE SON MÉTODOS DE GTrama
Y por supuesto no pude hacer uso de
System.ArrayCopy más bien hacer la copia o conversión manual...
Código Java:
Ver originalDouble [] double_Double
(double[] ddata
){ //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;
}
double [] Double_double
(Double[] 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;
}
Es por ello que me tocó implementar dos métodos para hallar los mínimos y dos métodos para hallar los máximos...
Código Java:
Ver originaldouble 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){
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){
double Min = data.elementAt(0);
for (int i=0;i<data.size();i++)
if (Min > data.elementAt(i))
Min = data.elementAt(i);
return Min;
}
Agregar una Variable a los vectores de la clase...
Código Java:
Ver originalint addVble
(Graphics g,
String nVble,
double[] aX,
double[] aY,
Color VbleColor,
float zDepth,
boolean bVisible
){ //Agrega una variable a Graficar, llamada nVble, de Color VbleColor y Grosor zDepth
if (nVector.
contains(nVble
)) throw new RuntimeException("La Variable ya existe"); if(aX.
length == 0||aY.
length == 0) throw new RuntimeException("Arreglos de datos vacíos");
//Agrega el Mínimo y el Máximo valor de los Arreglos aX y aY a los Vectores xMin, XMax, yMin y yMax
xMin.add(getMin(aX));
xMax.add(getMax(aX));
yMin.add(getMin(aY));
yMax.add(getMax(aY));
gVector.add(g2);
nVector.add(nVble);
Double[] vX
= double_Double
(aX
); //Convierte el Arreglo double vX a Vector Double vX Double[] vY
= double_Double
(aY
); //Convierte el Arreglo double vY a Vector Double vY xVector.add(vX);
yVector.add(vY);
cVector.add(VbleColor);
dVector.add(zDepth);
vVector.add(bVisible);
//Halla el Mínimo Valor xMin y yMin y el Máximo valor de xMax y yMax
MinX = getMin(xMin);
MaxX = getMax(xMax);
MinY = getMin(yMin);
MaxY = getMax(yMax);
return nVector.size();
}
Borrar una variable de los vectores...
Código Java:
Ver original //Elimina una variable a Graficar llamada nVble
if (!nVector.
contains(nVble
)) throw new RuntimeException("La Variable no existe"); int Indice = nVector.indexOf(nVble);
xMin.remove(Indice);
xMax.remove(Indice);
yMin.remove(Indice);
yMax.remove(Indice);
gVector.remove(Indice);
nVector.remove(Indice);
xVector.remove(Indice);
yVector.remove(Indice);
cVector.remove(Indice);
dVector.remove(Indice);
vVector.remove(Indice);
//Halla el Mínimo Valor xMin y yMin y el Máximo valor de xMax y yMax
MinX = getMin(xMin);
MaxX = getMax(xMax);
MinY = getMin(yMin);
MaxY = getMax(yMax);
return nVector.size();
}
ACA ESTA La DUDA FUERTE
Método grafica..lo que hace es graficar u ocultar las lineas de alguna variable indicada en la variable Indice...
g2.setXORMode(getBackground()); Por ejemplo al tratar de borrar una línea me deja unos punticos, es decir, no la borra toda...
Código Java:
Ver original //Recarga una gráfica para mostrarla u ocultarla
Color color
= cVector.
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.drawLine ((int)aX[j], (int)aY[j], (int)aX[j+1], (int)aY[j+1]);
}
}
g.drawImage(GrafImagen, PosX, PosX, this);
//repaint();
}
Aca está la manera en que uso la clase...
Código Java:
Ver original GTrama MisGraficos = new GTrama(10,10,400,400);
double misT[] = {100,120,140,160,180,200,220,240};
double misX[] = {110,120,230,140,150,160,270,180};
double misY[] = {140,55,90,200,140,124,210,60};
double misZ[] = {125,300,170,150,110,110,200,100};
MisGraficos.
addVble(g ,
"a", misT, misX,
Color.
RED,
(float)1,
true); MisGraficos.
addVble(g ,
"b", misT, misY,
Color.
GREEN,
(float)1.1,
true); MisGraficos.
addVble(g ,
"c", misT, misZ,
Color.
BLUE,
(float)1.2,
true); MisGraficos.ViewAll(g );
}
Por favor si aún no se entiende mi código por favor me avisan