Siguiendo con este tema, he seguido haciendo pruebas. Como se ve en la imagen que he colgado más arriba, el vídeo lo ha cargado en un Frame nuevo, por lo que la ventana principal de AGE pierde el foco.
Quería insertar el vídeo dentro del Frame propio de AGE, pero para ello necesito una referencia a un JFrame o JPanel propio de AGE.
He rebuscado por el log de IRC y una vez Al-Khwarizmi me comentó que el cliente tenía un método "cliente.getFrame ( "nombreFrame" ) que ya me da en sí un JPanel"
Luego tenía que añadir mi JPanel;
panelFrame = cliente.getFrame("nombreFrame);
-> En "nombreFrame", ¿un nombre que yo quiera?panelFrame.add(miJPanel);
Pero no llego a cargar nada.
Lo que tengo más o menos:
En el world;
Código:
JPanel elFrame () {
j = world.getPlayer();
InputOutputClient client = j.getIO();
if ( client instanceof ColoredSwingClient ) {
frame = client.getFrame("El frame");
j.write ("Nombre del frame tomado.\n");
}
return frame;
}
Y en una Room con el comando mirar:
Código:
if ( equals (verb, "mirar") ) {
URL clases = world.getResource("panelvideo.jar");
addClassPath( clases );
recurso = world.getResource("vi.mpg");
PanelDeVideo panel = new PanelDeVideo ( world.elFrame() );
i = panel.init ( recurso );
if ( i == 1 ) // Video cargado ok
{
mobile ("jugador").write ("OK\n");
}
else if ( i == -1) // Video cargado no ok
{
mobile ("jugador").write ("NO OK\n");
}
}
A la clase PanelDeVideo que he creado le paso un panel donde se inserta en la misma clase.
Código:
public PanelDeVideo (JPanel elFrame) {
this.elFrame = elFrame; // De tipo JPanel
this.setLayout(new BorderLayout());
}
public int init(URL ruta) {
try {
player = Manager.createRealizedPlayer(new MediaLocator(ruta));
video = player.getVisualComponent();
video.setSize(800,500);
video.setVisible(true);
if(video != null)
this.add("Center",video);
elFrame.add(this); // -------->>>> AQUÍ SE AÑADE AL PANEL QUE SE CARGA
player.start();
this.updateUI();
return 1;
} catch (Exception ex) {
System.out.println("Error al cargar el video.");
return -1;
}
}
¿Estoy tomando bien la referencia del JPanel de AGE?