GRAZIEEEE!
Tanto per precisione ti posto il codice completo:
codice:/*** NOMEFiLE: SetCoordinate.java AUTORE: Baglieri Salvatore & Fundarò Alessandro VERSiONE: 1.0 OBiETTiVO: A partire dalle coordinate spaziali (x ed y) visualizza il contenuto di 6 Remote Display DATA: 28/09/2004 ***/ package examples.CoordinateAgent; /*** 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 public 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(); /*** 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 "); } } [...] } // Fine ActionPerformed } // Fine ActionEventi public String[] getTextFieldValues(){ return new String[]{xField.getText(), yField.getText()}; } } // Fine Classe
codice:/*** NOMEFiLE: CoordinateAgent.java OBiETTiVO: A partire dalle coordinate spaziali (x ed y) visualizza il contenuto di 6 Remote Display DATA: 12/10/2004 ***/ package examples.CoordinateAgent; import jade.core.*; import jade.core.behaviours.*; import jade.lang.acl.*; /*** Dichiarazione della classe CoordinateAgent che utilizza le funzionalità degli agenti ***/ public class CoordinateAgent extends Agent { protected void setup() { addBehaviour(new SimpleBehaviour(this) { // Aggiunge un nuovo comportamento "semplice" private boolean finished = false; // Variabile booleana public void action() { SetCoordinate s = new SetCoordinate(); String output = ""; System.out.println(getLocalName() +": ready!!"); // Stampa il messaggio doWait(15000); // Aspetta 15 secondi prima di inviare il messaggio output="Coordinate: " + s.getTextFieldValues()[0] + " " + s.getTextFieldValues()[1]; AID r = new AID(); // Crea un nuovo AID che corrisponderà a quella del Receiver r.setLocalName("display1@messia:1099/JADE"); // Setta come, receiver, l'agente "display1" ACLMessage msg = new ACLMessage(ACLMessage.QUERY_REF); // Dichiara un nuovo messaggio di tipo QUERY_REF msg.setSender(getAID()); // Setta come sender se stesso msg.addReceiver(r); // Aggiunge tra i receiver del messaggio "r" msg.setContent(output); // Setta il contenuto del messaggio "msg" send(msg); // Invia il messaggio /*** 1. Setta la variabile booleanda finished a TRUE 2. Aspetta 5 secondi 3. Cancella se stesso. ***/ finished = true; doWait(5000); myAgent.doDelete(); } // Fine action() public boolean done() { return finished; } // Fine done() }); // Fine Behaviour } // Fine setup() } // Fine CoordinateAgent
codice:/*** NOMEFiLE: ReceiverAgent.java OBiETTiVO: Riceve il messaggio da visualizzare dal CoordinateAgent e lo visualizza a schermo intero ***/ package examples.ReceiverAgent; import javax.swing.JOptionPane; import jade.core.*; import jade.core.behaviours.*; import jade.lang.acl.ACLMessage; import jade.domain.FIPAAgentManagement.ServiceDescription; import jade.domain.FIPAAgentManagement.DFAgentDescription; import jade.domain.DFService; import jade.domain.FIPAException; // Definizione della classe RecevierAgent public class ReceiverAgent extends Agent { // inizializzazione della stringa display a stringa vuota String display=""; // crea la classe WaitRecevierAndReplyBehaviour che estende il comportamento della classe // di jade che non fa altro che aspettare un messaggio per poi rispondere di conseguenza class WaitRecevierAndReplyBehaviour extends SimpleBehaviour { private boolean finished = false; // Dichiarazione di una variabile booleana settata a false /*** Creazione del metodo WaitReceiverAndReplyBehaviour al cui interno viene passato il parametro "a" ***/ public WaitReciverAndReplyBehaviour(Agent a) { super(a); } // Fine WaitReciverAndReplyBehaviour public void action() { // Dichiarazione del metodo action ACLMessage msg = blockingReceive(); // Istanza di un messaggio ACL denominato msg if(msg != null) { ACLMessage reply = msg.createReply(); if(msg.getPerformative()== ACLMessage.QUERY_REF){ String content = msg.getContent(); display = content; JOptionPane.showMessageDialog(null, display, "Messaggio", JOptionPane.PLAIN_MESSAGE); // Stampa il messaggio } } else { JOptionPane.showMessageDialog(null, "Messaggio non valido!!", "Messaggio", JOptionPane.WARNING_MESSAGE); } } // Fine action() public boolean done() { return finished; } } // Fine classe WaitReciverAndReplyBehaviour // Dichiarazione del metodo protected setup() protected void setup() { /** Registrazione con il DF **/ DFAgentDescription dfd = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription(); sd.setType("AgentcitiesReciverAgent"); sd.setName(getName()); sd.setOwnership("Baglieri & Fundarò"); dfd.setName(getAID()); dfd.addServices(sd); try { DFService.register(this,dfd); } catch (FIPAException e) { System.err.println(getLocalName()+" registrazione con DF non effettuata. Ragione: "+e.getMessage()); doDelete(); } WaitRicevierAndReplyBehaviour nostroBehaviour = new WaitRecevierAndReplyBehaviour(this); addBehaviour(nostroBehaviour); } // Fine setup() } // Fine classe RecevierAgent
Ne approfitto per chiederti... al posto della classica:
cosa potrei usare per stampare il messaggio su una finestra gigante con scritto, altrettanto gigante, il contenuto di display??codice:JOptionPane.showMessageDialog(null, display, "Messaggio", JOptionPane.PLAIN_MESSAGE); // Stampa il messaggio
Non credo che esistacodice:JOptionPane.showMessageDialog(null, display, "Messaggio", JOptionPane.GIGANT_MESSAGE ); // Stampa il messaggio![]()

Rispondi quotando