Ho modificato così:
codice:
import javax.swing.JApplet;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ServerApplet extends JApplet
{
	private JButton button;
	
	public void init()
	{
		button = new JButton ("Start Server");
		button.addActionListener
		(
			new ActionListener()
			{
				public void actionPerformed (ActionEvent event)
				{
					Thread serverThread = new Thread
					(
						new Runnable()
						{
							public void run()
							{
								Server server = new Server();
								server.runServer();
							}
						}
					);
					serverThread.start();
				}
			}
		);
		
		add (button);
	}
}
Non mi da i problemi di prima, però se chiudo il frame, e lo riapro cliccando di nuovo sul pulsante dell'applet, viene lanciata una BindException, come se la connessione del Socket fosse ancora attiva, e quindi come se il frame precedente si fosse solo nascosto e non chiuso. Forse quel DISPOSE_ON_CLOSE del frame di Server non va bene? Come faccio a chiuderlo bene?