A Y U D A

Elena
31 de Octubre del 2003
Hola, soy nueva en Java y estoy haciendo una aplicación con tres clases.

La primera es EjecutaGrafica que abre una ventana llamando a la clase Ejercicio1. Bien pues cuando pincho en la ventana de Ejercicio1 quiero que se muestre en la misma ventana la otra clase (Ejercicio2), ¿que es lo que tengo que hacer para cerrar la primera clase y en la misma ventana me muestre Ejercicio2?.
Añado el código para ver si hay algun alma caritativa que me ayude que estoy haciendo mal en el código.

Clase EjecutaGrafica.java:

import java.awt.Frame;
import java.awt.event.*;
public class EjecutaGrafica
{
static Frame frameGeneral = new Frame();
static Ejercicio1 miEjercicio1 = new Ejercicio1();
static Ejercicio2 miEjercicio2 = new Ejercicio2();

public static void main(String[] args)
{
System.out.println("main de EjecutaGrafica");

miEjercicio1.init();
frameGeneral.repaint();
frameGeneral.add(miEjercicio1);

WindowListener wl = new WindowAdapter()
{
public void windowClosing( WindowEvent evt )
{
System.exit(0);
}
};

frameGeneral.pack();
frameGeneral.show();
frameGeneral.setResizable(false);
frameGeneral.setSize(800,600);
frameGeneral.addWindowListener(wl);
frameGeneral.setVisible(true);
frameGeneral.setLocation(100,100);
}
}

Clase Ejercicio1.java:

import java.awt.event.*;
import java.applet.Applet;

public class Ejercicio1 extends Applet implements MouseListener, MouseMotionListener
{

EjecutaGrafica miEjecutaGrafica = new EjecutaGrafica();

public void init()
{
addMouseListener (this);
addMouseMotionListener(this);
}

public void update(Graphics g)
{
paint(g);
}

public void paint(Graphics g)
{
g.drawString("Estas en el applet del EJERCICIO1", 100, 100);
} // Fin Paint(Graphics g)

public void mousePressed(MouseEvent evt)
{
miEjecutaGrafica.miEjercicio2.init();
miEjecutaGrafica.frameGeneral.repaint();
miEjecutaGrafica.frameGeneral.add(miEjecutaGrafica.miEjercicio2);

WindowListener wl = new WindowAdapter()
{
public void windowClosing( WindowEvent evt )
{
System.out.println("Cerrando");
System.exit(0);
}
};
} // Fin de mousePressed

// No estamos usando los otros eventos del mouse.
public void mouseClicked (MouseEvent evt){}
public void mouseExited (MouseEvent evt){}
public void mouseEntered(MouseEvent evt){}
public void mouseReleased(MouseEvent evt){}
public void mouseDragged(MouseEvent evt){}
public void mouseMoved (MouseEvent evt){}
}// Fin de la clase

Ejercicio2.java:

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class Ejercicio2 extends Applet implements MouseListener, MouseMotionListener
{

public void init()
{
System.out.println("Entra en el init de Ejercicio2");
addMouseListener (this);
addMouseMotionListener(this);
}

public void update(Graphics g)
{
paint(g);
}

public void paint(Graphics g)
{
g.drawString("Estas en el applet del EJERCICIO2",100,200);
} // Fin Paint(Graphics g)

public void mousePressed(MouseEvent evt)
{
} // Fin de mousePressed

// No estamos usando los otros eventos del mouse.
public void mouseClicked (MouseEvent evt){}
public void mouseExited (MouseEvent evt){}
public void mouseEntered(MouseEvent evt){}
public void mouseReleased(MouseEvent evt){}
public void mouseDragged(MouseEvent evt){}
public void mouseMoved (MouseEvent evt){}
}// Fin de la clase

Lucas
31 de Octubre del 2003
Comentarios aparte del codigo, para quitar un elemento visual (applet, panel, campo de texto, boton, ...) de un contenedor (Frame, ...) se hace con remove(componente a quitar) o bien removeAll(), despues de esto, añades el otro componente con add(componente) y yasta!

Elena
31 de Octubre del 2003
Gracias Lucas.

Solo una cosa mas, ¿a que te refieres con comentarios a parte del código?, no es que me lo tome a mal pero como estoy empezando no domino mucho, ¿que es lo que no te ha gustado?.

Muchas gracias de nuevo.