Fiz umas mudanças no codigo, para ficar mais facil :
Classe TelaParametro :
[code]public abstract class TelaParametro implements Serializable{
public abstract JPanel getJPanel();
}[/code]
Classe que herda a TelaParametro :
public class RPemailrec extends TelaParametro implements Serializable{
public JPanel getJPanel() {
JPanel painel = new JPanel();
painel.setSize(200,200);
painel.setBackground(new Color(120,160,200));
return painel;
}
}
Outra classe que herda a TelaParametro
public class Grafemailrec extends TelaParametro implements Serializable {
public final JPanel getJPanel() {
JPanel painel = new JPanel();
painel.setBackground(new Color(90,68,255));
return painel;
}
}
Classe que envia o Objeto Rpemailrec e o Objeto Grafemailrec:
this.oos = new ObjectOutputStream(this.socket.getOutputStream());
if(...){
RPemailrec rpemailrec = new RPemailrec();
this.oos.writeObject(rpemailrec);
this.oos.flush();
}
if(...){
Grafemailrec grafemailrec = new Grafemailrec();
this.oos.writeObject(grafemailrec);
this.oos.flush();
}
this.oos.close();
Classe que Recebe o Objeto pode ser que seja enviado o Rpemailrec ou o Objeto Grafemailrec
esta classe não sabe qual e ela apenas recebe e executa o metodo getJPanel()
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
this.tp = (TelaParametro) ois.readObject();
JPanel painel = this.tp.getJPanel();
Mas acontece esse erro ao tentar receber o Objeto :
java.lang.ClassNotFoundException: servidor.telaParametros.receptor.RPemailrec
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at java.io.ObjectInputStream.resolveClass(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at cliente.telaParametros.BuscaTela.conectar(BuscaTela.java:86)
at cliente.telaParametros.BuscaTela.getJPanel(BuscaTela.java:59)
at cliente.telaParametros.DialogParametros.getConteudoJpanel(DialogParametros.java:191)
at cliente.painelMenu.PainelMenu$1.actionPerformed(PainelMenu.java:91)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Desculpa estar escrevendo esse monte de codigo, mas é que estou com muita duvida nisso, eu tenho que enviar um objeto “generico” (que extende a classe TelaParametro) e executar o metogo getJPanel, que é sobrescrito nas classes filhas (RPemailrec e Grafemailrec), com isso ao receber o objeto no destino (cliente) a aplicacao conseguiria por exemplo exibir o JPANEL.
O Objetivo principal é que no cliente ele não tenha a RPemailrec.class e o Grafemailrec.class.