Deu certo, vou deixar minha solução aqui, ode ajudar mais alguém.
Inicialmente tenho que explicar melhor a ideia.
Eu criei um projeto para comunicação serial com alguns equipamentos e cada um deles responde em um protocolo diferente, então minha ideia foi a seguinte, desenvolver um .jar que faça esta comunicação com a serial e traduza o protocolo.
Ate a parte da comunicação serial tranquilo, meu problema foi quando eu estava em outro .jar.
Minha solução foi a seguinte:
Criei na classe que controla a comunicação serial um array para responder a todas as chamadas.
private List<ActionListener> listeners = new ArrayList<ActionListener>(0);
e criei um método de acesso a este array para adicionar ouvidores:
public void addActionListener(ActionListener listener) {
this.listeners.add(listener);
}
em seguida criei um método para disparar os eventos:
public void dadosRecebidos(){
for(ActionListener listener : listeners) {
listener.actionPerformed(new ActionEvent(this,1,"DADOS RECEBIDOS"));
}
}
este metodo é chamado dentro do evento que é disparado ao receber dados na porta serial.
@Override
public void serialEvent(SerialPortEvent spe) {
//metodo que recebe os dados da serial
try {
switch(spe.getEventType()){
case SerialPortEvent.DATA_AVAILABLE:
if(input == null){
input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
}
dadosSerial = input.readLine();
System.out.println(dadosSerial);
//Sinalizar evento na porta serial
dadosRecebidos(); //aqui comunica o recebimento de dados
input=null;
break;
default:
break;
}
} catch (IOException e) {
}
}
Agora dentro já posso receber este evento dentro de outro .jar, bastou criar uma classe.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class DadosSerial implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Dados Serial : "+e.getID()+" > "+e.getActionCommand());
}
}
Agora dentro do meu JFrame eu Declarei minha classe de comunicação e instanciei a classe que associa o evento.
public class FramePrincipal extends javax.swing.JFrame {
Serial.SerialTxRx serial = new Serial.SerialTxRx();
/**
* Creates new form FramePrincipal
*/
public FramePrincipal() {
initComponents();
serial.addActionListener(new DadosSerial());
}
Grande abraço, e espero também poder ajudar alguém e me desculpem qualquer erro este é meu primeiro post.