Hola de nuevo, elAntonie si que he mirado el bug, la URL que me pasaste, de hecho te contesté.
HackmanC , la clase no hereda de jframe y japplet al mismo tiempo, lo he intentando heredando de jframe y implementando runnable y tambien haciendo lo que comentas, de crear una entrada al programa por applet y que este sea el que llame despues a la clase que hereda de jframe, pero aun asi me ha tirado el error que al parecer es un bug, de todas formas mi clase applet esta eredando de Applet, no de Japplet asique probaré ese metodo y ya os cuento.
Muchas gracias a todos.
un saludo.
Cita:
Iniciado por HackmanC Hola,
El problema es que tu Applet no puede extender JApplet y JFrame al mismo tiempo. Y si no usas JApplet no corre en el browser. Así que tienes que crear 2 puntos de entrada diferentes.
Código Java:
Ver originalpackage JPuzzle;
import JPuzzle.Graphics.Panel;
import java.lang.reflect.InvocationTargetException;
/**
* La aplicación principal del juego Puzzle.
* Funciona tanto como un Applet como una aplicación Desktop.
* @author HackmanGT
*/
public class Puzzle
extends javax.
swing.
JApplet {
private static Panel panel
;
/**
* Aplicación principal.
* Inicializa el Applet.
*/
@Override
public void init() {
super.init();
try {
public void run() {
initComponents();
}
});
System.
err.
println(ex.
getMessage()); ex.printStackTrace();
}
}
/**
* Inicializa el componente.
*/
private void initComponents() {
setBackground
(java.
awt.
Color.
WHITE); add(panel);
}
/**
* Aplicación principal.
* Inicializa el Frame.
* @param args los argumentos de la línea de comandos
*/
public static void main
(String[] args
) { public void run() {
createAndShowGUI();
}
});
}
/**
* Inicializa el componente.
*/
private static void createAndShowGUI() {
frame.setTitle(".: JPuzzle :.");
frame.setResizable(true);
frame.pack();
frame.setSize(640, 480);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
En este caso se usa un JPanel (Panel()) para contener TODA la aplicación, y se crea un JFrame por aparte, si se ejecuta como Applet entonces se inserta el Panel dentro del contenedor JApplet, si se ejecuta como Desktop se crea el JFrame y se inserta el Panel dentro del JFrame.
En tu caso podrías crear una nueva clase que extienda JApplet y crear el JFrame en el init() y en el main(). Cuando se ejecute como Applet (init()), el espacio del Applet en el browser va a quedar vacío, pero te va a mostrar el JFrame por aparte. Y cuando se ejecute como Desktop (main()) va a mostrar el JFrame.
Saludos,