Foros del Web » Programación para mayores de 30 ;) » Java »

Graficar

Estas en el tema de Graficar en el foro de Java en Foros del Web. Hola amigos, mi problema es el siguiente, este código para graficar no me grafica, al compilar me dice ke no hay ningun problema pero pues ...
  #1 (permalink)  
Antiguo 25/02/2011, 22:53
 
Fecha de Ingreso: octubre-2010
Mensajes: 93
Antigüedad: 13 años, 6 meses
Puntos: 0
Graficar

Hola amigos, mi problema es el siguiente, este código para graficar no me grafica, al compilar me dice ke no hay ningun problema pero pues el problema es mi logica... si alguien me pudiera ayudar les agradecería muchisimo

Código Java:
Ver original
  1. import java.awt.*;
  2. import java.awt.geom.*;
  3. import javax.swing.*;
  4.  
  5. public class GraphingData extends JPanel {
  6.     int x0,xN,y0,yN;
  7.     double xmin,xmax,ymin,ymax;
  8.     int apAncho, apAlto;
  9.     int h=getHeight();
  10.     int w=getWidth();
  11.  
  12.  
  13.     final int PAD = 20;
  14.  
  15.     protected void paintComponent(Graphics g) {
  16.  
  17.     super.paintComponent(g);
  18.         Graphics2D g2 = (Graphics2D)g;
  19.         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  20.                             RenderingHints.VALUE_ANTIALIAS_ON);
  21.         double x1,y1,x2,y2;
  22.         int j1,j2;
  23.  
  24.  
  25.         x0 = y0 = 0;
  26.         xN = apAncho-1;
  27.         yN = apAlto-1;
  28.         xmin = -5.0;
  29.         xmax = 5.0;
  30.         ymin = -7.0;
  31.         ymax = 1.0;
  32.  
  33.         j1 = ValorY( 0 );
  34.  
  35.         g2.setPaint(Color.blue);
  36.  
  37.          for( int i=0; i < w; i++ ){
  38.              j2 = ValorY( i+1 );
  39.              g2.fillRect(i,j1,i+1,j2 );
  40.              j1 = j2;
  41.  
  42.          }
  43.     }
  44.  
  45. private int ValorY( int valor ) {
  46.  
  47.          double x,y;
  48.          int retorno;
  49.  
  50.          // Cartesianas equivalentes al punto de la pantalla
  51.          x = (valor * (xmax-xmin) / (h-1)) + xmin;
  52.  
  53.          // Calculamos LA FUNCION
  54.          y = (3*x*x) -6;
  55.  
  56.          // Escalamos la coordenada y dentro de los limites de la ventana
  57.          retorno = (int)( (y-ymin) * (w-1) / (ymax-ymin) );
  58.  
  59.          // Reconvertinos el valor cartesiano a punto de pantalla
  60.          retorno = h - retorno;
  61.  
  62.          return( retorno );
  63.  
  64.          }
  65.  
  66.     public static void main(String[] args) {
  67.         JFrame f = new JFrame();
  68.         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  69.         f.add(new GraphingData());
  70.         f.setSize(600,400);
  71.         f.setLocation(200,200);
  72.         f.setVisible(true);
  73.     }
  74. }

Última edición por celineadiction; 25/02/2011 a las 23:19
  #2 (permalink)  
Antiguo 26/02/2011, 07:16
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 2 meses
Puntos: 20
Respuesta: Graficar

hola, esta bien tu codigo pero sabes cual es el problema, que estas obteniendo mal el ancho del panel, "getWidth()" el resultado te da cero, por eso el ciclo nunca va iniciar

utiliza este codigo para obtener el ancho
Código java:
Ver original
  1. this.getParent().getWidth()

espero haberte ayudado saludos
  #3 (permalink)  
Antiguo 26/02/2011, 11:38
 
Fecha de Ingreso: octubre-2010
Mensajes: 93
Antigüedad: 13 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Graficar

Cita:
Iniciado por sivadmp Ver Mensaje
hola, esta bien tu codigo pero sabes cual es el problema, que estas obteniendo mal el ancho del panel, "getWidth()" el resultado te da cero, por eso el ciclo nunca va iniciar

utiliza este codigo para obtener el ancho
Código java:
Ver original
  1. this.getParent().getWidth()

espero haberte ayudado saludos
Muchísimas gracias!!! me ha servido mucho ahora si puedo ver bien la funcion a graficar :D

una pregunta: si quisiera que se empezara a graficar al momento de dar clic en un boton, la accion del boton solamente tiene que ser llamar al método paintComponent?? o de que manera se puede iniciar a graficar al pulsar un botón? de antemano muchas gracias a quien me responda
  #4 (permalink)  
Antiguo 26/02/2011, 23:33
 
Fecha de Ingreso: noviembre-2010
Ubicación: chile
Mensajes: 24
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Graficar

por lo que leo, el metodo seria mousePressed().

coloca el sgte codigo, en este caso es un jToggleButton1 es el nombre de mi boton,
tu escribe el nombre del tuyo.


private void jToggleButton1MousePressed(MouseEvent e)
{
// llama al metodo paint
repaint();
}

ojala te sirva
  #5 (permalink)  
Antiguo 27/02/2011, 00:25
 
Fecha de Ingreso: octubre-2010
Mensajes: 93
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Graficar

muchisimas gracias... lo probaré (:

Etiquetas: gráficos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:04.