Gestione degli eventi

di il
2 risposte

Gestione degli eventi

Salve,
ho scritto questi tre file java.
Il mio obiettivo è quello di stampare "You clicked the button" ogni volta che si preme il pulsante nel frame.
Mi da un errore alla riga 19 del file ButtonViewer.java ma non riesco a capire quale sia la causa.
error: incompatible types: ActionListener cannot be converted to java.awt.event.ActionListener
Se vado ad effettuare un operazione di casting mi da un ulteriore errore.
Qualcuno potrebbe aiutarmi?
Grazie.

ActionListener.java

import java.awt.event.ActionEvent;

public interface ActionListener {
	void ActionPerformed(ActionEvent event);
}
ClickListener.java

import java.awt.event.ActionEvent;

public class ClickListener implements ActionListener {

	@Override
	public void ActionPerformed(ActionEvent event) {
		
		//actions to do pressing button
		
		System.out.println("You clicked the button!");
		
	} //end of ActionPerformed

} //end of class
ButtonViewer.java

import javax.swing.JFrame;
import javax.swing.JButton;

public class ButtonViewer {
	
	//variables to set the size of frame are to be static
	public static final int xSize = 130;
	public static final int ySize = 100;
	
	public static void main(String[] args) {
		
		JFrame myframe = new JFrame();
		JButton mybutton = new JButton("Click me"); //the text if button is "Click me"
		
		//now you have to create the object ActionListener to add the ** to the button
		ActionListener listener = new ClickListener();
		
		
		mybutton.addActionListener(listener);
		
		
		myframe.setSize(xSize, ySize);
		myframe.setTitle("My button into my frame");
		myframe.add(mybutton); //add mybutton to myframe
		
		myframe.setVisible(true); //the visibility of frame is set to true
		
		
	} //end of main

} //end of class
P.S.:
Sto studiando autonomamente su slides prese in rete, il libro di Claudio De Sio e sull'Horstmann. Potreste consigliarmi qualche altro manuale ben fatto?
E poi, come editor mi consigliate Eclipse o IntelliJ Idea o qualche altro? (io odio quelli troppo macchinosi infatti solitamente uso Sublime Text - agli arbori usavo vim da riga di comando ma gestire file di 1000 linee di codice diventa un po macchinoso).
Grazie.

2 Risposte

  • Re: Gestione degli eventi

    antomau96 ha scritto:


    ActionListener.java
    
    import java.awt.event.ActionEvent;
    
    public interface ActionListener {
    	void ActionPerformed(ActionEvent event);
    }
    
    Scusa ma ... questa interfaccia l'hai scritta tu, giusto? Bene ... anzi, male! Questo tuo ActionListener NON ti serve. Non devi definire tu una interfaccia di un listener ..... A MENO che tu voglia implementare da zero un nuovo listener "custom" per un tuo componente. Ma questo vorrebbe dire tutta una infrastruttura per la gestione del listener, di cui presumo non ne hai ancora conoscenze/competenze.

    Semplicemente USA il ActionListener che esiste già. Definisci una tua classe che IMPLEMENTA il ActionListener già esistente di AWT e poi "registra" una sua istanza presso il pulsante di tuo interesse.
  • Re: Gestione degli eventi

    Grazie, non mille, ma diecimila volte perché quella cosa dell'ActionListener scritto là un pò a caso non l'avevo proprio capita .
    Confermo che adesso tutto funziona e posto i sorgenti nel caso in cui dovessero servire a qualcuno in futuro .

    ClickListener.java
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class ClickListener implements ActionListener {
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    
    		System.out.println("Clicked button");
    		
    	}
    
    } //end of class
    
    ButtonViewer.java
    
    import javax.swing.JFrame;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    
    public class ButtonViewer {
    	
    	//variables to set the size of frame are to be static
    	public static final int xSize = 130;
    	public static final int ySize = 100;
    	
    	public static void main(String[] args) {
    		
    		JFrame myframe = new JFrame();
    		JButton mybutton = new JButton("Click me"); //the text if button is "Click me"
    		/*
    		 * The frame and the button are also made as:
    		 JFrame myframe;
    		 JButton mybutton;
    		 
    		 public ButtonViewer() { //builder
    		 	myframe = new JFrame();
    		 	mybutton = new JButton;
    		 }
    		 */
    		
    		//now you have to create the object ActionListener to add the ** to the button
    		ActionListener listener = new ClickListener();
    		
    		
    		mybutton.addActionListener(listener);
    		
    		
    		myframe.setSize(xSize, ySize);
    		myframe.setTitle("My button into my frame");
    		myframe.add(mybutton); //add mybutton to myframe
    		
    		myframe.setVisible(true); //the visibility of frame is set to true
    		
    		
    	} //end of main
    
    } //end of class
    
Devi accedere o registrarti per scrivere nel forum
2 risposte