Ciao a tutti, da poco ho inziato il mio primo programmino con un tocco di grafica in java, leggendo qualche guida su swing e awt qua e là in giro.
Ma a quanto pare ho un problemuccio sull'utilizzo dell' ActionListener:
In questo programma ho creato dei menu utilizzando Choice , il cui contenuto vorrei poi andare a estrarre con un Bottone, ma ho un problema di una eccezzione java.lang.ClassCastException.

Ho cercato un pò in giro e a quanto ho capito non posso fare il cast di un java.awt.Button su un java.awt.Choice (me lo diceva nel terminale pure.. bastava leggere )

Comunque.. voi sapreste aiutarmi? Almeno vorrei solo capire se il programmino che sto costruendo è totalmente sbagliato o se sono vicino alla soluzione .

Codice:
codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class ChoiceActionListener extends JFrame {
    public ChoiceActionListener() { 
        initialize();
    }
    
    Choice citta = null,zona=null,tipologia=null;
    private void initialize() {
        setSize(420, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
        Font font = new Font("Verdana", Font.BOLD, 20);
        citta = new Choice();           
        citta.add("Torino");
        citta.add("Nichelino");
        citta.add("Moncalieri");         
        citta.setFocusable(false);
        citta.setFont(font);
        
        
        
        zona = new Choice();
        zona.add("Mirafiori Nord");
        zona.add("Mirafiori Sud");
        zona.add("Lingotto");
        zona.setFocusable(false);
        zona.setFont(font);
       
        
        tipologia = new Choice();
        tipologia.add("Monlocale");
        tipologia.add("Bilocale");
        tipologia.add("Trilocale");
        tipologia.setFocusable(false);
        tipologia.setFont(font);

        
       
        
        Button save = new Button("Salva");
        save.setFont(font);
        save.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                //
                // Get the source of the component, which is our combo box.
                //
            	citta = (Choice) event.getSource();
            	zona = (Choice) event.getSource();
                tipologia = (Choice) event.getSource();

                //
                // Print the selected items and the action command.
                //
                String message="";
                Object obj1 = citta.getSelectedItem();
                String _citta = obj1.toString();                
                message +="Città: "+_citta;
                Object obj2 = zona.getSelectedItem();
                String _zona = obj2.toString();                
                message +="Zona: "+_zona;
                Object obj3 = tipologia.getSelectedItem();
                String _tipologia = obj3.toString();  
                message +="Tipologia: "+_tipologia;
                JOptionPane.showMessageDialog(null, "Hai selezionato " +message);                
            }
            
        });
        
        setLayout(new FlowLayout(FlowLayout.LEFT));
        JTextField tcitta;     
        tcitta = new JTextField("Città",10);
        tcitta.setEditable(false);
        tcitta.setFont(font);
        getContentPane().add(tcitta);
        getContentPane().add(citta);
        JTextField tzona;     
        tzona = new JTextField("Zona",10);
        tzona.setEditable(false);
        tzona.setFont(font);
        getContentPane().add(tzona);
        getContentPane().add(zona);
        JTextField ttipologia;     
        ttipologia = new JTextField("Tipologia",10);
        ttipologia.setEditable(false);
        ttipologia.setFont(font);
        getContentPane().add(ttipologia);
        getContentPane().add(tipologia);
        getContentPane().add(save);

        
        
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new ChoiceActionListener().setVisible(true);
                
            }
        });
    }
}
Eccezzione:
codice:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.awt.Button cannot be cast to java.awt.Choice
	at ChoiceActionListener$1.actionPerformed(ChoiceActionListener.java:50)
	at java.awt.Button.processActionEvent(Unknown Source)
	at java.awt.Button.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)