Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [JAVA] Comando extends.. quando 1 non basta!

    Ho creato un agente cosìfatto:

    codice:
    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() {
    				
    	                        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
    Questo non deve fare altro che ricevere due coordinate x ed y, decidere un messaggio da inviare ad un altro agente ed inviarlo. Tralasciando il fatto che "msg.addReceiver("RMA@miopc:1099/JADE");" viene riconosciuto come errore, xkè non è applicabile una stringa al metodo addReceiver. La mia domanda è un'altra, vorrei far aprire a tale programma un altro programma da me creato:

    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();
    
    /*** 
    
     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
    In sintesi, il primo agente deve lanciare il SetCoordinate, prendere il messaggio del primo display e memorizzarlo nel messaggio ACL "msg". Come fare???? Visto che in JAVA non è possibile una cosa del tipo "extends Agent extends JFrame", come estendere le due cose?

    Spero nel vostro aiuto....
    Ubuntu 7.10 - JAVA: JDK 1.6.0 - MSI Megabook S262

    www.digital2b.com
    Gestione Documentale e Archiviazione Ottica Sostitutiva

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    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 ):

    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
    Poi:
    codice:
    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
    Penso che così dovrebbe andare. Fammi sapere ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3
    Ho aggiunto

    codice:
    public String[] getTextFieldValues() {
      
       return new String[]{
           xField.getText(),
           yField.getText()
       };
    }
    al SetCoordinate.java e...

    F:\jade\examples\CoordinateAgent>javac SetCoordinate.java
    SetCoordinate.java:91: illegal start of expression
    public String[] getTextFieldValues() {
    ^
    1 error
    Ubuntu 7.10 - JAVA: JDK 1.6.0 - MSI Megabook S262

    www.digital2b.com
    Gestione Documentale e Archiviazione Ottica Sostitutiva

  4. #4
    effettivamente non capisco cosa non vada nel SetCoordinate modificato... è possibile che debba dichiarare diversamente o in posizione diversa il metodo??
    Ubuntu 7.10 - JAVA: JDK 1.6.0 - MSI Megabook S262

    www.digital2b.com
    Gestione Documentale e Archiviazione Ottica Sostitutiva

  5. #5
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; ti chiedo scusa.... ho mnesso il metodo nel costruttore della classe ; la fretta.... prova così:
    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
    
    ***/
    /*
       Suppongo cge tu voglia avere i valori dai textfield x e y
    */
    public String[] getTextFieldValues(){
      
       return new String[]{
           xFiled.getText(),
           yField.getText()
       }
    }   
     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 ");
        }
       }
    
    /*** 
    
     -+ 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
    
    }
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  6. #6
    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:

    codice:
         JOptionPane.showMessageDialog(null, display, "Messaggio", JOptionPane.PLAIN_MESSAGE); // Stampa il messaggio
    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.GIGANT_MESSAGE ); // Stampa il messaggio
    Non credo che esista
    Ubuntu 7.10 - JAVA: JDK 1.6.0 - MSI Megabook S262

    www.digital2b.com
    Gestione Documentale e Archiviazione Ottica Sostitutiva

  7. #7
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Ciao; mi fa piacere che funzioni; per la seconda domanda... in verità mi trovi un po' spiazzato perchè non utilizzo Swing da anni e non mi ricordo gran che.... cmq mi informerò e se ne avrai ancora bisogno ti dirò. Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.