Come hai giustamente detto, per salvare oggetti la classe deve implementare l'interfaccia Serializable, che non implementa metodi ma è "solo" un markup.

la vera domanda è: perchè dovresti salvare un JPanel?

Se invece JPanel era solo un esempio, mentre magari ArrayList è più realistico(oltre che utilizzabile), io principalmente lavoro con questa ottica:

codice:
public class NomeClasse implements Serializable{

private List<Object> lista;

public NomeClasse(){
   lista=new ArrayLista<Object>();
}
...
...
...

public boolean addElement(Object c){
   if(lista.contains(c))
      return false;
   lista.add(c);
   return true;
}

ovviamente con le dovute accortezze nell'utilizzo degli oggetti e delle varie cose