Allora per l'Action ho risolto così vedendo un esempio ma vorrei cmq più chiarimenti in merito alle domande poste nel post sopra.
Ecco la classe che gestisce l'evento

codice:
package provaSwing;
import javax.swing.*;
import java.awt.event.*;
public class Button1Event implements ActionListener {
	
	private int click = 0;
	
	   public void actionPerformed(ActionEvent e) {
/*
		     if (e.getSource()==Button1) {
		    	 click++;
		    	 if (click == 1){
		    		 Button1.setText("sono stato clickato");
		    	 }else
		    		 Button1.setText("sono stato clickato "+click "volte");
		     }
*/
		   }
	   
}
Vedete la parte commentata?
Allora se inserisco un semplice println funge, ma se uso quel codice no, perche non riconosce l'oggetto Button1 che ho creato nella classe HelloWorldPanel, che trovate sopra, come posso risolvere?

EDIT:
Siccome non posso editare sopra posto qua il nuovo codice che pare da un libro più corretto, in cui Button1 è private:
codice:
package provaSwing;
import javax.swing.*;
import java.awt.event.*;
public class HelloPanel extends JPanel {
	
	private JButton Button1 = new JButton(); 
	
	public HelloPanel() {
		/*
		 * Dato che la classe è un estensione di JPanel il Panel viene
		 * Creato dal costruttore quando viene istanziata la classe
		 * con this.add aggiungo al Pannelloo (this si riferisce al Panel)
		 * la label.
		 */
		Button1Event bevent1 = new Button1Event();
		Button1.addActionListener(bevent1);
		JLabel l = new JLabel();
		l.setText("FANCULO");
		Button1.setText("Ciao");
		this.add(l);
		this.add(Button1);
		}

}