Che cos'è FrameChooseOption? Estende JPanel? JFrame? Altro?
Ti posto un esempio un po' più semplice, vedi se ti è d'aiuto:
codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author Andrea
*/
class MyPanel extends JPanel implements ActionListener {
private JButton button;
private JTextField textfield;
private int counter = 0;
public void actionPerformed(ActionEvent ae) {
textfield.setText("You pressed the button "+(++counter)+" times");
}
public MyPanel(String text) {
super();
this.setLayout(new GridLayout(2,1));
button = new JButton(text);
button.addActionListener(this);
textfield = new JTextField();
this.add(button);
this.add(textfield);
}
}
public class MainApplet extends JApplet {
/** Creates a new instance of MainApplet */
public MainApplet() {
}
public void init() {
MyPanel p = new MyPanel("From JApplet init()");
this.add(p);
}
public static void main (String[] args) {
JFrame frame = new JFrame();
frame.setSize(400,400);
MyPanel p = new MyPanel("From JApplet main()");
frame.getContentPane().add(p);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Aggiungici un file html del tipo
codice:
<html>
<body>
<applet code="MainApplet" width="400" height="400"></applet>
</body>
</html>
e prova a lanciare da browser e da shell.
Poi venendo alla tua questione: bhè, se hai le varie classi che aprono altri JFrame, man mano che le istanzi, salteranno fuori dal browser... non c'è altro. Se volevi un comportamento diverso avresti dovuto fare estendere JPanel ed andare a sostituire il contenuto del JFrame principale (o della JApplet nel caso di applet) con il contenuto della nuova classe.
Tralasciando il resto delle magagne (violaioni di sicurezza che ti costringeranno a dotare l'applet di una firma digitale, visto che apri socket e leggi e scrivi su risorse che potrebbero benissimo essere esterne al mondo a cui un'applet può di norma accedere)...