Hola otra vez, estoy de nuevo en apuros, tengo por un lado un codigo que me hace un arbol, por otro lado tengo un codigo que me coge dos elementos y los dibuja, y estoy intentando unirlos de manera q al final consiga dibujar el arbol (con todos los nodos). No me da errores cuando compilo, pero cuando ejecuto me sale:
java.lang.NoClassDefFoundError: Arbol
Exception in thread "main" Exit code: 1
There were errors
Os paso los codigos por si me haceis el gran favor de mirarlos:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import java.util.Vector;
import java.lang.Object;
public class Arbol {
public static void main (String args[]) {
ParteDeArbol tronco = new Rama(null, "Tronco", 250, 50);
tronco.insertarVastago(new Rama(tronco, "Rama 1", 100, 100));
tronco.insertarVastago(new Rama(tronco, "Rama 2", 200, 100));
tronco.insertarVastago(new Rama(tronco, "Rama 3", 300, 100));
tronco.insertarVastago(new Rama(tronco, "Rama 4", 400, 100));
tronco.insertarVastago(new Rama(tronco, "Rama 5", 500, 100));
tronco.getVastagoPorNombre("Rama 1").insertarVastago(new Rama(tronco.getVastagoPorNombre("Rama 1"), "Rama 6", 100, 200));
tronco.getVastagoPorNombre("Rama 1").insertarVastago(new Hoja(tronco.getVastagoPorNombre("Rama 1"), "Hoja 1"));
tronco.getVastagoPorNombre("Rama 3").insertarVastago(new Hoja(tronco.getVastagoPorNombre("Rama 3"), "Hoja 4"));
tronco.getVastagoPorNombre("Rama 1").getVastagoPorNombre("Rama 6").insertarVastago(new Hoja(tronco.getVastagoPorNombre("Rama 1").getVastagoPorNombre("Rama 6"), "Hoja 2"));
tronco.getVastagoPorNombre("Rama 1").getVastagoPorNombre("Rama 6").insertarVastago(new Hoja(tronco.getVastagoPorNombre("Rama 1").getVastagoPorNombre("Rama 6"), "Hoja 3"));
tronco.mostrarSubarbol(0);
tronco.getVastagoPorNombre("Rama 3").mostrarSubarbol(0);
tronco.getParteDeArbolPorNombre("Hoja 3").setNombre("Hoja n");
System.out.println("\nEl padre de Hoja n es " + tronco.getParteDeArbolPorNombre("Hoja n").getPadre().getNombre());
tronco.mostrarSubarbol(0);
CircleDraw circulo1=new CircleDraw("Rama 1","Hoja 1");
Frame frame = circulo1 ;
frame.addWindowListener (new WindowAdapter(){
public void windowClosing (WindowEvent we){
System.exit (0) ;
}
});
frame.setSize (650,650) ;
frame.setVisible (true) ;
}
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
public class CircleDraw extends Frame implements java.io.Serializable{
private Rama n1;
private Rama n2;
int x1,y1,x2,y2;
//constructor
public CircleDraw (Rama a, Rama b) {
this.n1=a;
this.n2=b;
x1=n1.getX();
y1=n1.getY();
x2=n2.getX();
y2=n2.getY();
}
public void paint ( Graphics g ) {
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 de la posicion
Graphics2D ga = ( Graphics2D ) g;
ga.draw ( circle );
ga.draw(circle2);
ga.setPaint ( Color.blue );
ga.drawLine (x1+25,y1+25,x2+25,y2+25);
ga.fill(circle);
ga.fill(circle2);
}
}
import java.util.*;
import java.util.Vector;
public class Hoja implements ParteDeArbol {
private String nombre;
private ParteDeArbol padre = null;
public Hoja(ParteDeArbol padre, String nombre){
this.padre = padre;
this.nombre = nombre;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public ParteDeArbol getPadre(){
return padre;
}
public void setPadre(ParteDeArbol padre){
this.padre = padre;
}
public void mostrarSubarbol(int profundidad){
String viñeta = "";
for (int i = 0; i < profundidad; i++){
viñeta += '\t';
}
System.out.println(viñeta + " " + getNombre() + " no tiene vástagos");
}
public void insertarVastago(ParteDeArbol componente) {
System.out.println("No se pueden añadir elementos a una hoja");
}
public void eliminarVastago(ParteDeArbol componente) {
System.out.println("No hay nada por debajo de una hoja");
}
public int getIndiceDeVastago(String nombre){
return -1;
}
public ParteDeArbol getVastago(int indice){
return null;
}
public ParteDeArbol getVastagoPorNombre(String nombre){
return null;
}
public ParteDeArbol getParteDeArbolPorNombre(String nombre){
return null;
}
}
import java.util.*;
public interface ParteDeArbol {
String getNombre();
void setNombre(String nombre);
ParteDeArbol getPadre();
void setPadre(ParteDeArbol padre);
void mostrarSubarbol(int profundidad);
void insertarVastago(ParteDeArbol componente);
void eliminarVastago(ParteDeArbol componente);
int getIndiceDeVastago(String nombre);
ParteDeArbol getVastago(int indice);
ParteDeArbol getVastagoPorNombre(String nombre);
ParteDeArbol getParteDeArbolPorNombre(String nombre);
//Métodos get/set
public int getX() ;
public int getY() ;
public void setX (int x1) ;
public void setY (int y1) ;
}
import java.util.*;
import java.util.Vector;
public class Rama implements ParteDeArbol {
private String nombre;
private Vector<ParteDeArbol> componentes = null;
private ParteDeArbol padre = null;
private int x;
private int y;
public Rama(ParteDeArbol padre, String nombre, int x1, int y1) {
componentes = new Vector<ParteDeArbol>();
this.padre = padre;
this.nombre = nombre;
x=x1;
y=y1;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public ParteDeArbol getPadre(){
return padre;
}
public void setPadre(ParteDeArbol padre){
this.padre = padre;
}
public void mostrarSubarbol(int profundidad){
String viñeta = "";
for (int i = 0; i < profundidad; i++){
viñeta += '\t';
}
if(componentes.size() == 0){
System.out.println(viñeta + " " + getNombre() + " no tiene vástagos");
}
else{
System.out.println(viñeta + " Subarbol de " + getNombre());
viñeta += '\t';
for(int j = 0;j < componentes.size();j++){
System.out.println(viñeta + " Vastago nº " + j + ": " + componentes.elementAt(j).getNombre());
componentes.elementAt(j).mostrarSubarbol(profundid ad + 1);
}
}
}
public void insertarVastago(ParteDeArbol componente) {
componentes.add(componente);
}
public void eliminarVastago(ParteDeArbol componente) {
componentes.remove(componente);
}
public int getIndiceDeVastago(String nombre){
for(int i = 0;i < componentes.size();i++){
if(componentes.elementAt(i).getNombre().equals(nom bre)){
return i;
}
}
return -1;
}
public ParteDeArbol getVastago(int indice){
if((indice > -1) && (indice < componentes.size())){
return componentes.elementAt(indice);
}
else return null;
}
public ParteDeArbol getVastagoPorNombre(String nombre){
return getVastago(getIndiceDeVastago(nombre));
}
public ParteDeArbol getParteDeArbolPorNombre(String nombre){
ParteDeArbol aux = null;
if(getIndiceDeVastago(nombre) != -1){
return getVastagoPorNombre(nombre);
}
for(int i = 0;i < componentes.size();i++){
aux = componentes.elementAt(i).getParteDeArbolPorNombre( nombre);
if (aux != null){
return aux;
}
}
return aux;
}
public int getX() { return x; }
public int getY() { return y; }
public void setX (int x1) { x = x1; }
public void setY (int y1) { y = y1; }
public String toString ( ) {
String datos = "las coordenadas son";
datos += " x=" + getX() +", y="+getY()+";\n";
return datos;
}
}
si alguien quiere que le mande los .java para compilarlo que me lo diga y se lo mando encantada. Muchisimas gracias