Ciao; secondo me potresti crearti un metodo publico nel SetCoordinate che si occupa di restituire il messaggio; questo metodo può essere richiamato dal primo agente che poi va a valorizzare il messaggio ACL "msg". Una cosa, per intenderci, di questo tipo (a patto che abbia capito bene il tuo problema):
Poi:codice:NOMEFiLE: SetCoordinate.java AUTORE: Baglieri Salvatore & Fundarò Alessandro VERSiONE: 1.0 BETA OBiETTiVO: A partire dalle coordinate spaziali (x ed y) visualizza il contenuto di 6 Remote Display DATA: 28/09/2004 ***/ /*** Importo librerie per l'interfaccia GUI ***/ import java.awt.*; // per i contenitori di componenti grafiche e il layout import java.awt.event.*; // per l'interazione dell'utente con la GUI del programma import javax.swing.*; // per le etichette, le caselle di testo e il bottone /*** Dichiarazione della classe SetCoordinate che utilizza finestra GUI ***/ public class SetCoordinate extends JFrame { private int x, y; // Coordinata X e Y private int A=1, B=4, C=6, D=5, E=9, F=18, G=7, H=18; // Punti critici del posizionamento private JLabel xLabel, yLabel; // Etichette di testo private JLabel unoLabel, dueLabel, treLabel, quattroLabel, cinqueLabel, seiLabel; // Etichette per i display private JTextField unoField, dueField, treField, quattroField, cinqueField, seiField; // Caselle di testo per i display private JTextField xField, yField, display; // Caselle di testo private JButton button=new JButton("AGGiORNA DiSPLAY!"); // Pulsante /*** Metodo principale SetCoordinate in cui vengono definite le componenti grafiche ***/ public SetCoordinate () { // titolo della finestra super("Sistema di posizionamento"); // definizione del contenitore c Container c = getContentPane(); c.setLayout( new FlowLayout() ); // in risposta ad un'azione eseguita su un componente GUI ActionEventi evento = new ActionEventi(); /* Suppongo cge tu voglia avere i valori dai textfield x e y */ public String[] getTextFieldValues(){ return new String[]{ xFiled.getText(), yField.getText() } } /*** Definizione delle etichette per le coordinate X ed Y ***/ xLabel = new JLabel( "Posizione X" ); xField = new JTextField( 10 ); xField.addActionListener(evento); c.add( xLabel ); c.add( xField ); yLabel = new JLabel( "Posizione Y" ); yField = new JTextField( 10 ); yField.addActionListener(evento); c.add( yLabel ); c.add( yField ); display = new JTextField( 40 ); display.setEditable( false ); c.add( display ); /*** Definizione delle etichette dei Remote Display in cui verranno visualizzati i messaggi in base alle coordinate fornite dal sistema di posizionamento. ***/ unoLabel = new JLabel( "\nRemote Display 01" ); unoField = new JTextField( 40 ); unoField.setEditable( false ); c.add( unoLabel ); c.add( unoField ); dueLabel = new JLabel( "Remote Display 02" ); dueField = new JTextField( 40 ); dueField.setEditable( false ); c.add( dueLabel ); c.add( dueField ); treLabel = new JLabel( "Remote Display 03" ); treField = new JTextField( 40 ); treField.setEditable( false ); c.add( treLabel ); c.add( treField ); quattroLabel = new JLabel( "Remote Display 04" ); quattroField = new JTextField( 40 ); quattroField.setEditable( false ); c.add( quattroLabel ); c.add( quattroField ); cinqueLabel = new JLabel( "Remote Display 05" ); cinqueField = new JTextField( 40 ); cinqueField.setEditable( false ); c.add( cinqueLabel ); c.add( cinqueField ); seiLabel = new JLabel( "Remote Display 06" ); seiField = new JTextField( 40 ); seiField.setEditable( false ); c.add( seiLabel ); c.add( seiField ); // bottone aggiunto all'interfaccia grafica ed associato ad un evento button.addActionListener(evento); c.add(button); /*** Caratteristiche finestra: - setSize(Larghezza, Altezza) - setLocation(PosizioneX,PosizioneY) Posizioni iniziali rispetto al punto 0, 0 situato in alto a sinistra del monitor. ***/ setSize(500,420); setLocation(100,100); // Visualizza la finestra show(); } // Fine metodo SetCoordinate /*** Metodo principale in cui viene aperta la finestra ***/ public static void main (String args[]) { SetCoordinate window = new SetCoordinate(); window.addWindowListener ( new WindowAdapter () { public void windowClosing ( WindowEvent e ) { System.exit(0); } } ); } // Fine metodo Main /*** Caricamento dell'ActionListener per la definizione delle risposte del programma in seguito ad un'azione dell'utente (in questo caso: click sul Button) ***/ private class ActionEventi implements ActionListener { public void actionPerformed( ActionEvent e ) { x=Integer.parseInt (xField.getText()); y=Integer.parseInt (yField.getText()); display.setText( "La coordinata X è: " + x +"; mentre la coordinata Y è: " + y ); /*** Nel caso di posizioni non monitorate o errate, tutti i display sono spenti (OFF)! ***/ unoField.setText(" OFF "); dueField.setText(" OFF "); treField.setText(" OFF "); quattroField.setText(" OFF "); cinqueField.setText(" OFF "); seiField.setText(" OFF "); /*** -+ ZONA 1 +- ***/ if (x>0 && x<D) { if (y>=B && y<=C) { unoField.setText("DIPARTIMENTO DI INFORMATICA - Università di Palermo"); dueField.setText(" OFF "); treField.setText(" OFF "); quattroField.setText(" OFF "); cinqueField.setText("Spazio non monitorato"); seiField.setText(" OFF "); } } /*** -+ ZONA 2 +- ***/ if (x>D && x<F) { if (y>=B && y<=C) { unoField.setText(" OFF "); dueField.setText("Laboratorio di ricerca: Ufficio dell'Ing. Sorce - Laureandi - Dott. di Ricerca"); treField.setText("Aule professori - Servizi Igienici (in fondo a sinistra)"); quattroField.setText(" OFF "); cinqueField.setText(" OFF "); seiField.setText(" OFF"); } } /*** -+ ZONA 3 +- ***/ if (x>=G && x<=E) { if (y>=C && y<H) { unoField.setText(" OFF "); dueField.setText(" OFF "); treField.setText(" OFF "); quattroField.setText(" OFF "); cinqueField.setText(" OFF "); seiField.setText("Servizi Igienici"); } } /*** -+ ZONA 4 +- ***/ if (x>=D && x<=E) { if (y>=A && y<=B) { unoField.setText(" OFF "); dueField.setText(" OFF "); treField.setText(" OFF "); quattroField.setText(" Ufficio dell'Ing. Salvatore Sorce "); cinqueField.setText(" OFF "); seiField.setText(" OFF "); } } } // Fine ActionPerformed } // Fine ActionEventi } // Fine Classe
Penso che così dovrebbe andare. Fammi sapere ciaocodice:package examples.CoordinateAgentAgent; import jade.core.Agent; import jade.core.AID; import jade.core.behaviours.CyclicBehaviour; import jade.lang.acl.*; public class CoordinateAgent extends Agent { protected void setup() { addBehaviour(new CyclicBehaviour(this) { public void action() { //Quì invento perchè non conosco queste classi SetCoordinate s = new Set Coordinate(); ACLMEssage msg = s.getTextFieldValues()[0]; ACLMessage msg = new ACLMessage(ACLMessage.INFORM);; ACLMessage reply = msg.createReply(); msg.setSender(getAID()); //Per inserire il nome proprio dell'agente mittente msg.addReceiver("RMA@miopc:1099/JADE"); msg.setContent("Ciao"); send(msg); //Per spedire il messaggio }//Fine action() });//Fine CyclicBehaviour }//Fine setup() }//Fine ExampleAgent

):
Rispondi quotando