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

dibujar lista enlazada

Estas en el tema de dibujar lista enlazada en el foro de Java en Foros del Web. Hola, estoy empezando a programar y tengo un error en un codigo. El objetivo es hacer una lista enlazada y dibujarla, cada nodo como un ...
  #1 (permalink)  
Antiguo 13/04/2011, 10:39
 
Fecha de Ingreso: abril-2011
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
dibujar lista enlazada

Hola,

estoy empezando a programar y tengo un error en un codigo. El objetivo es hacer una lista enlazada y dibujarla, cada nodo como un circulo y unirlos entre ellos. Yo tengo mi codigo CircleDraw, q hereda de Frame, y a este quiero pasarle los nodos, de manera q con getX() y getY() obtenga sus coordenadas. y aqui me da este fallo:

Exception in thread "main" java.lang.NullPointerException
at CircleDraw.<init>(CircleDraw.java:21)
at prueba.main(prueba.java:19)



os dejo el codigo del CircleDraw:


import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

public class CircleDraw extends Frame {
private Nodo n1;
private Nodo n2;

//constructor
public CircleDraw (Nodo a, Nodo b) {
n1=a;
n2=b;
}

int x1=n1.getX();
int y1=n1.getY();
int x2=n2.getX();
int y2=n2.getY();



Shape circle = new Ellipse2D.Double ( x1 , y1 , 50 , 50 ) ;//los dos ultimos parametros son la anchura y altura del circulo
Shape circle2 = new Ellipse2D.Double ( x2 , y2 , 50 , 50 ) ;//los dos primeros parametros son la x y la y del centro

public void paint ( Graphics g ) {
Graphics2D ga = ( Graphics2D ) g;
ga.draw ( circle ) ;
ga.draw(circle2);
ga.setPaint ( Color.blue ) ;
ga.drawLine (425,425,125,125);
ga.fill(circle);
ga.fill(circle2);
}

}


y donde tengo el main:


public class prueba{
public static void main ( String args []) {

// Creamos la lista
Nodo n1=new Nodo(200,200);
Nodo n2=new Nodo(200,100);
Lista lista = new Lista ();
lista.insertarFinal ( n1 );
lista.insertarFinal ( n2 );

CircleDraw circulo1=new CircleDraw(n1,n2);
Frame frame = circulo1 ;
frame.addWindowListener ( new WindowAdapter (){
public void windowClosing ( WindowEvent we ){
System.exit ( 0 ) ;
}
});
frame.setSize ( 650 , 650 ) ;
frame.setVisible ( true ) ;
}
}



alguien puede ayudarme??

gracias!
  #2 (permalink)  
Antiguo 13/04/2011, 12:17
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: dibujar lista enlazada

hola sonia esta haciendo mal

cuando obtienes

int x1 = n1.getX();

n1 esta en null

es por eso que te sale el error, lo que deberias hacer es colocarlo dentro del constructor

Código JAVA:
Ver original
  1. int x1, y1, x2, y2;
  2.    
  3.     // constructor
  4.     public CircleDraw(Nodo a, Nodo b) {
  5.         this.n1 = a;
  6.         this.n2 = b;
  7.         x1 = n1.getX();
  8.         y1 = n1.getY();
  9.         x2 = n2.getX();
  10.         y2 = n2.getY();
  11.     }

:) saludos
__________________
agradecer no cuesta nada
Entre más información proporciones más fácil será ayudarte, y asi evitar adivinar el problema con el que cuentas.
  #3 (permalink)  
Antiguo 14/04/2011, 05:10
 
Fecha de Ingreso: abril-2011
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Respuesta: dibujar lista enlazada

Muchisimas gracias!!!!!!!!!!

Ahora funciona, bueno, tambien he metido

Shape circle = new Ellipse2D.Double ( x1 , y1 , 50 , 50 ) ;//los dos ultimos parametros son la anchura y altura del circulo
Shape circle2 = new Ellipse2D.Double ( x2 , y2 , 50 , 50 ) ;//los dos primeros parametros son la x y la y del centro


dentro de paint, asi qda mejor.


Sabes de alguna forma de guardar una lista enlazada (con nodos q contienen datos) en un archivo? Lo q pretendo es tener almacenada una lista enlazada e ir añadiendole nuevos nodos a esa lista. He estado buscando buscando y se hace con la interfaz serializable. Entonces, mi codigo es el siguiente:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class prueba{
public static void main ( String args []) {

// Creamos la lista
Nodo n1=new Nodo(140,600);
Nodo n2=new Nodo(500,500);
Lista lista = new Lista ();
lista.insertarFinal (n1);
lista.insertarFinal (n2);
System.out.println ("listas \n" + lista.toString());

ObjectOutputStream salida=new ObjectOutputStream(new FileOutputStream("media.obj"));

salida.writeObject("guardar este string y un objeto\n");
salida.writeObject(lista);
salida.close();


//Frame frame = new CircleDraw(n1,n2);
CircleDraw circulo1=new CircleDraw(n1,n2);
Frame frame = circulo1 ;
frame.addWindowListener (new WindowAdapter(){
public void windowClosing (WindowEvent we){
System.exit (0) ;
}
});
frame.setSize (650,650) ;
frame.setVisible (true) ;
}
}



y en CircleDraw:

public class CircleDraw extends Frame implements java.io.Serializable{
....
}




me dice que me falla aqui:

ObjectOutputStream salida=new ObjectOutputStream(new FileOutputStream("media.obj"));

pero no tengo ni idea de porque. He pensado en q me falte alguna libreria, pero busco y rebusco y no veo q me falte ninguna.

Te agradeceria, si puedes, q me ayudaras
  #4 (permalink)  
Antiguo 14/04/2011, 05:35
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: dibujar lista enlazada

¿Podrías pegar aquí la traza de error que te da?

De todos modos yo definiría primero el FileOutputStream y luego el ObjectOutputStream.
  #5 (permalink)  
Antiguo 14/04/2011, 06:48
 
Fecha de Ingreso: abril-2011
Mensajes: 10
Antigüedad: 13 años
Puntos: 0
Respuesta: dibujar lista enlazada

por supuesto! me dice lo siguiente:

C:\Users\Sonia\Desktop\PROYECTO\proyecto pruebas\prueba1\prueba.java:23: cannot find symbol
symbol : class ObjectOutputStream
location: class prueba
ObjectOutputStream salida=new ObjectOutputStream(new FileOutputStream("media.obj"));
^
C:\Users\Sonia\Desktop\PROYECTO\proyecto pruebas\prueba1\prueba.java:23: cannot find symbol
symbol : class ObjectOutputStream
location: class prueba
ObjectOutputStream salida=new ObjectOutputStream(new FileOutputStream("media.obj"));
^
C:\Users\Sonia\Desktop\PROYECTO\proyecto pruebas\prueba1\prueba.java:23: cannot find symbol
symbol : class FileOutputStream
location: class prueba
ObjectOutputStream salida=new ObjectOutputStream(new FileOutputStream("media.obj"));
^


gracias
  #6 (permalink)  
Antiguo 14/04/2011, 09:00
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: dibujar lista enlazada

Como te dije antes, realiza mejor las declaraciones por separado:

ObjectOutputStream salida=new ObjectOutputStream(new FileOutputStream("media.obj"));

Debería ser

FileOutputStream fos = new FileOutputStream("media.obj");
ObjectOutputStream salida=new ObjectOutputStream(fos);

Etiquetas: dibujar, enlazada, lista
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 20:30.