La Gestione degli Eventi

 

ChangeProperty in oggetti swing

 

Qui andremo a testare la possibilià di eseguire delle azioni ogni qual volta viene cambiata una proprietà di un oggetto swing. Questa proprietà non verrà cambiata premendo un bottone ma in modo automatico utilizzando la classe timer

 

 

Contenuti:

1

Mr.Webmaster - Il pattern Observer in Java

2 Unisa.it - Gestione degli eventi
3 Simplesoft.it - Gestione degli eventi in java swing
4  

 

Esempi:

1

Observer e Observable

2  
3  
4  

 

 

  1 package taswi;
  2 
  3 import java.awt.Color;
  4 import java.awt.event.ActionEvent;
  5 import java.awt.event.ActionListener;
  6 import java.beans.PropertyChangeListener;
  7 import javax.swing.*;
  8 
  9 public class TaSwi extends JFrame {
 10     private JLabel jLabel1 = new JLabel();
 11     private final JLabel jLabel2 = new JLabel();
 12     private int cnt=0,flg=0;
 13     
 14     public TaSwi() {       
 15         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 16         setBounds(800, 500, 400, 300);
 17         getContentPane().setLayout(null);
 18         setVisible(true);
 19 
 20         jLabel1.setBackground(Color.red);
 21         jLabel1.setFont(new java.awt.Font("Tahoma", 1, 30));
 22         jLabel1.setText("Pippo");
 23         jLabel1.setOpaque(true);
 24         jLabel1.addPropertyChangeListener(new PropertyChangeListener() {
 25             @Override
 26             public void propertyChange(java.beans.PropertyChangeEvent evt) {
 27                 jLabel1PropertyChange(evt);
 28             }
 29         });
 30         getContentPane().add(jLabel1);
 31         jLabel1.setBounds(20, 20, 150, 79);
 32 
 33         jLabel2.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
 34         jLabel2.setText("Pippo nero su fondo rosso");
 35         
 36         getContentPane().add(jLabel2);
 37         jLabel2.setBounds(20, 100, 500, 150);
 38         
 39         new Timer(2500,new ActionListener() {
 40             @Override
 41             public void actionPerformed(ActionEvent evt) {
 42                 if (flg==0) {flg=1; cnt=1;}
 43                 if(cnt<=3){
 44                     cnt++;
 45                     switch (cnt) {
 46                         case 1:
 47                             jLabel1.setText("Pippo");
 48                             jLabel1.setBackground(Color.red);
 49                             jLabel1.setForeground(Color.black);
 50                             break;
 51                         case 2:
 52                             jLabel1.setText("Pluto");
 53                             jLabel1.setBackground(Color.green);
 54                             jLabel1.setForeground(Color.yellow);
 55                             break;
 56                         case 3:
 57                             jLabel1.setText("Paperino");
 58                             jLabel1.setBackground(Color.blue);
 59                             jLabel1.setForeground(Color.white);
 60                             cnt=0;
 61                             break;
 62                         default:
 63                             break;
 64                     }
 65                 }
 66             }
 67         }).start(); 
 68     }
 69 
 70     private void jLabel1PropertyChange(java.beans.PropertyChangeEvent evt) {
 71         String col_fondo="";
 72         String col_testo="";
 73         String testo="";
 74         String msg="";
 75 
 76         String pro = evt.getPropertyName();
 77         if ("text".equals(pro)){
 78             String tx=jLabel1.getText();
 79             if(null!=tx)switch (tx) {
 80                 case "Pippo":
 81                     col_fondo="Rosso";
 82                     col_testo="Nero";
 83                     testo="Pippo";
 84                     break;
 85                 case "Pluto":
 86                     col_fondo="Verde";
 87                     col_testo="Giallo";
 88                     testo="Pluto";
 89                     break;
 90                 case "Paperino":
 91                     col_fondo="Blu";
 92                     col_testo="Bianco";
 93                     testo="Paperino";
 94                     break;
 95                 default:
 96                     break;
 97             }
 98             msg = msg+testo +" "+ col_testo + " su fondo "+ col_fondo;
 99             jLabel2.setText(msg);
100         }
101     }
102     public static void main(String args[]) {
103         java.awt.EventQueue.invokeLater(new Runnable() {           
104             @Override
105             public void run() {
106                 new TaSwi();
107             }
108         });
109     }
110 }