Newsgroup: it.comp.java
Titolo: ActionListener: sapete come si fa?

Questo è uno stralcio di una applet più complessa. Questo pezzo si
dovrebbe occupare di intercettare la pressione dei bottoni
title_button, much_slower, etc e cambiare internamente il valore della
pausa (incrementarlo o diminuirlo) e mostrare il nuovo valore in una
casella. Praticamente se schiaccio il bottone con su scritto F, che
corrisponde a fast, la mia applet ha una pausa più piccola e va più
veloce. Il problema è che da una deprecation perchè con il 1.2 si usa
ActionListener. Ho capito che nell'init devo mettere qualcosa del
tipo:
	much_slower.addActionListener(new ButtonHandler());
	slower.addActionListener(new ButtonHandler());
	title_button.addActionListener(new ButtonHandler());
	faster.addActionListener(new ButtonHandler());
	much_faster.addActionListener(new ButtonHandler());
ma poi 'sto "maneggiatore di bottoni" ;-) come lo devo scrivere in
modo che faccia quello che faceva prima?
Vi ringrazio in anticipo.
Segue ciò che dà la deprecation ( The method boolean
action(java.awt.Event, java.lang.Object) is not deprecated, but
overrides a deprecated method of the same signature declared in class
java.awt.Component.
    public boolean action (Event event, Object arg) {
		   ^
    public boolean action (Event event, Object arg) {
	if (event.target == title_button) {
	    startSort();
	} else if (event.target == much_slower) {
	    if (pause_milli_secs <= max_millis - 100) {
	        set_pause (pause_milli_secs + 100);
	    }
	} else if (event.target == slower) {
	    if (pause_milli_secs <= max_millis - 20) {
	        set_pause (pause_milli_secs + 20);
	    }
	} else if (event.target == faster) {
	    if (pause_milli_secs >= min_millis + 20) {
	        set_pause (pause_milli_secs - 20);
	    }
	} else if (event.target == much_faster) {
	    if (pause_milli_secs >= min_millis + 100) {
	        set_pause (pause_milli_secs - 100);
	    }
	} else {
            return super.action (event, arg);
	}
	return true;
   }
    protected void set_pause (int millis) {
        if ((millis <= max_millis) && (millis >= min_millis)) {
	    pause_milli_secs = millis;
	    speed.setText ("ms " + pause_milli_secs);
	}
	if (pause_milli_secs < min_millis + 100) {
	      much_faster.setEnabled(false);
	} else {
	      much_faster.setEnabled(true);
	}
	if (pause_milli_secs < min_millis + 20) {
	      faster.setEnabled(false);
	} else {
	      faster.setEnabled(true);
	}
	if (pause_milli_secs > max_millis - 100) {
	     much_slower.setEnabled(false);
	} else {
	      much_slower.setEnabled(true);
	}
	if (pause_milli_secs > max_millis - 20) {
	      slower.setEnabled(true);
	} else {
	    slower.setEnabled(false);
	}
    }
--
     Good luck!              
un...@softhome.net
     ADaM        
http://members.xoom.com/unno/
If debugging is the process of removing bugs,
then programming must be the process of putting them in.
(Dykstra)

Devi registrare sul JComponent un Listener in questo modo :
Esempio :
JButton slow = new JButton("Slower");
slow.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        setPause(.....);
    }
});
JButton fast = new JButton("Faster");
fast.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        setPause(.....);
    }
});
In questo modo ad ogni pressione del tasto viene dispacciato l'evento il
che vuol dire
che viene eseguito il metodo actionPerformed del relativo ActionListener.
Per funzioni più complesse invece hai la possibilità definire per ogni
JComponent un ActionCommand e creare un'unica classe che implementa
ActionListener e che controlla l'ActionCommand per discriminare il
comportamento.

 wrote:
Sto studiando Java da poco ma devo saziare la mia insana curiosità
anche su argomenti che per me sono ancora offlimits.
Cos'è un ActionListener?
Grazie per la pazienza.
Quando sarò in grado sanerò i dubbi di chiunque per ricambiare.
A buon rendere.

,

Se vi interessa il pattern di listening, potete trovare
un'implementazione Java generica (non solo quindi per awt/swing) in
http://space.tin.it/computer/csadun/software/lf/guide.html
(in inglese) dove c'e' anche una breve discussione sul pattern stesso.
Una descrizione delle basi del funzionamento di quanto sopra (in
italiano) la trovate in un mio articolo in PDJ di questo mese - trovate
online la preview - che vi da' l'idea di base, senza bisogno di
comprare la rivista. (Speriamo che Mario non mi legga! ;-) all'URL
http://www.edizioni-globali.com/n016p45h.htm
--
God is Real, unless declared Integer
Sent via Deja.com 
http://www.deja.com/
Share what you know. Learn what you don't.

 wrote:

thanx, risolto col prezioso aiuto di Leonardo Boselli (ancora grazie).
P.S. Il mio msg ha la data del 6/7 anche da te?


A buon rendere.
Ti mando in email il pezzo di guida ufficiale a riguardo.
