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,